W mojej aplikacji (po stronie klienta) ustawiłem limit czasu połączenia i poleceń na 10 minut.
Następnie moja aplikacja uruchamia proste zapytanie: SELECT pg_sleep(65)
Na niektórych serwerach działa dobrze, ale inne serwery zamykają połączenie po 60 sekundach.
Czy może to być jakaś konfiguracja serwera PostgreSQL, która ogranicza limity czasu i ignoruje ustawienia mojego klienta?
postgresql
timeout
Andrzej Gis
źródło
źródło
SHOW statement_timeout;
Odpowiedzi:
Tak, to możliwe
Dokumenty zawierają dwa ustawienia (
idle_in_transaction_session_timeout
nowość w wersji 9.6x)statement_timeout
(liczba całkowita)idle_in_transaction_session_timeout
(liczba całkowita)Ważne jest, aby nie ustawiać
statement_timeout
pliku postgresql.conf, chyba że chcesz rozrywki.Oto przykład jego działania
źródło
Nie po wyjęciu z pudełka. Jednak skompilowanie niestandardowego serwera byłoby dość łatwe, ale zignorowałeś twoje ustawienia.
Ale znacznie bardziej prawdopodobne jest to, że twoje połączenia są przerywane przez zaporę ogniową lub bramę, która nie lubi bezczynnych połączeń.
Jeśli masz dostęp do pliku dziennika serwera, powinno to dać dobrą wskazówkę. Jeśli klient mówi, że serwer nieoczekiwanie zakończył połączenie, a serwer mówi, że klient nieoczekiwanie zamknął połączenie, prawdopodobnie jest to coś pomiędzy klientem a serwerem, które faktycznie przerywa połączenie.
źródło
Tak to mozliwe. Istnieje kilka parametrów połączenia, które należy ustawić.
Proszę zapoznać się z linkiem poniżej. https://jdbc.postgresql.org/documentation/head/connect.html
loginTimeout connectTimeout socketTimeout cancelSignalTimeout
źródło