Chociaż nie jestem pewien, co konkretnie powoduje problem (wygląda na to, że otwarte połączenie może w jakiś sposób skończyć się zerwaniem po stronie klastra RDS), wydaje się, że problem jest pogłębiany przez agresywne łączenie połączeń i ponowne wykorzystanie strona klienta dzieje się w MySQL .NET Connector.
Po wystąpieniu problemu wydaje się, że dotknięte nim połączenia po prostu pozostają w puli, są arbitralnie pobierane z puli i ponownie używane w kółko. (Całkiem prawdopodobne, że jest to związane z tym, jak widzisz, że problem nadal występuje losowo po jego uruchomieniu.)
Dodanie Connection Lifetime=x
do ciągu połączenia, gdzie x oznacza czas w sekundach, przez który połączenie jest utrzymywane do ponownego użycia, co najmniej zmniejsza objawy.