Я пытаюсь отладить внезапное увеличение средней нагрузки. я смотрел на этот чтобы узнать, подвергались ли мы DDoS-атакам, но выдающийся IP-адрес был адресом обратной связи:
$ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
...
3893 127.0.0.1
Глядя на то, почему это может быть, я посмотрел на свои соединения PostgreSQL с lsof -i | grep postgresql
:
pgbouncer 9751 postgres 42u IPv4 83453387 0t0 TCP localhost:57025->localhost:postgresql (ESTABLISHED)
pgbouncer 9751 postgres 43u IPv4 83479251 0t0 TCP localhost:34492->localhost:postgresql (ESTABLISHED)
pgbouncer 9751 postgres 44u IPv4 83453393 0t0 TCP localhost:57028->localhost:postgresql (ESTABLISHED)
postgres 9791 postgres 11u IPv4 83451361 0t0 TCP localhost:postgresql->localhost:56947 (ESTABLISHED)
postgres 9792 postgres 11u IPv4 83451366 0t0 TCP localhost:postgresql->localhost:56948 (ESTABLISHED)
postgres 9800 postgres 11u IPv4 83449299 0t0 TCP localhost:postgresql->localhost:56954 (ESTABLISHED)
postgres 9815 postgres 11u IPv4 83452202 0t0 TCP localhost:postgresql->localhost:56962 (ESTABLISHED)
postgres 9816 postgres 11u IPv4 83448763 0t0 TCP localhost:postgresql->localhost:56965 (ESTABLISHED)
postgres 9817 postgres 11u IPv4 83448768 0t0 TCP localhost:postgresql->localhost:56967 (ESTABLISHED)
postgres 9820 postgres 11u IPv4 83448776 0t0 TCP localhost:postgresql->localhost:56970 (ESTABLISHED)
postgres 9821 postgres 11u IPv4 83453105 0t0 TCP localhost:postgresql->localhost:56971 (ESTABLISHED)
postgres 9822 postgres 11u IPv4 83453107 0t0 TCP localhost:postgresql->localhost:56975 (ESTABLISHED)
postgres 9825 postgres 11u IPv4 83453109 0t0 TCP localhost:postgresql->localhost:56979 (ESTABLISHED)
postgres 9831 postgres 11u IPv4 83449334 0t0 TCP localhost:postgresql->localhost:56987 (ESTABLISHED)
postgres 9836 postgres 11u IPv4 83448808 0t0 TCP localhost:postgresql->localhost:56994 (ESTABLISHED)
postgres 9841 postgres 11u IPv4 83448812 0t0 TCP localhost:postgresql->localhost:57003 (ESTABLISHED)
postgres 9842 postgres 11u IPv4 83446596 0t0 TCP localhost:postgresql->localhost:57010 (ESTABLISHED)
postgres 9843 postgres 11u IPv4 83453388 0t0 TCP localhost:postgresql->localhost:57025 (ESTABLISHED)
postgres 9844 postgres 11u IPv4 83453394 0t0 TCP localhost:postgresql->localhost:57028 (ESTABLISHED)
postgres 10489 postgres 11u IPv4 83479252 0t0 TCP localhost:postgresql->localhost:34492 (ESTABLISHED)
Когда я тогда сделаю ps aux | grep <PID>
для некоторых PID в этом списке я обычно получаю что-то вроде этого:
$ ps aux | grep 14010
postgres 14010 11.8 1.9 4191632 318244 ? Ss 12:25 0:09 postgres: postgres mydb 127.0.0.1(58099) idle
Что все это значит? Означает ли это, что у меня множество незанятых подключений, срок действия которых не истек? Может ли это быть причиной высокой средней нагрузки? Я использую pgbouncer, но по умолчанию server_idle_timeout
из 600, так что с тех пор я изменил это на 60.
Может быть, ваше приложение, использующее Postgresql, не закрывает правильно сокеты. Если это динамический веб-сайт, если каждая страница открывает сокет, но не закрывает его до истечения времени ожидания, вы можете резко увеличить мощности своего сервера.
Не могли бы вы проверить, что подключается к PostgreSQL? Проверьте, есть ли большое количество подключений к вашему веб-сайту, если это веб-сервер