Состряпал я такой скрипт:
#!/bin/bash
echo "-----------------------------------------------------------------------------------" >> /var/log/my-memory-log
date >> /var/log/my-memory-log
echo "---" >> /var/log/my-memory-log
free -m >> /var/log/my-memory-log
echo "---" >> /var/log/my-memory-log
ps -aux -w -H | sort -nr -k 4 | head -20 >> /var/log/my-memory-log
Засунул его в крон с периодичностью 15 минут. А потом поглядел на результаты.
При старте:
vscan 2272 0.1 3.8 168048 120156 ? Ssl 09:59 0:09 /usr/sbin/clamd
vscan 2272 0.0 3.8 168048 120156 ? Ssl 09:59 0:00 /usr/sbin/clamd
root 2610 1.2 2.4 80180 76520 ? S 09:59 1:19 spamd child
root 2611 0.1 2.1 70880 67228 ? S 09:59 0:07 spamd child
root 2453 0.1 2.0 68148 63996 ? Ss 09:59 0:06 /usr/sbin/spamd -d -c -L -r /var/run/spamd.pid
squid 2697 0.1 1.4 51660 44228 ? S 10:00 0:06 (squid) -sY
named 2039 0.0 0.6 65500 21436 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.6 65500 21436 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.6 65500 21436 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.6 65500 21436 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.6 65500 21436 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
root 1479 0.0 0.4 17736 13028 ? Ss 09:59 0:00 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf
root 2559 0.0 0.3 29092 9324 ? Ss 09:59 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
root 2452 0.0 0.3 27596 9672 ? Sl 09:59 0:00 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
root 2452 0.0 0.3 27596 9672 ? Sl 09:59 0:00 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
root 2452 0.0 0.3 27596 9672 ? Sl 09:59 0:00 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
postgrey 2681 0.0 0.2 13348 9244 ? Ss 10:00 0:00 /usr/sbin/postgrey -d --inet=127.0.0.1:10031 --auto-whitelist-clients
wwwrun 3970 0.0 0.1 29200 5460 ? S 10:12 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 3342 0.0 0.1 29200 5464 ? S 10:07 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 3341 0.0 0.1 29200 5460 ? S 10:07 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
Через 3-4 часа работы:
squid 2697 0.4 5.6 185116 176512 ? S 10:00 2:11 (squid) -sY
vscan 2272 0.0 3.8 168048 120228 ? Ssl 09:59 0:09 /usr/sbin/clamd
vscan 2272 0.0 3.8 168048 120228 ? Ssl 09:59 0:00 /usr/sbin/clamd
root 2610 0.3 2.4 80180 76520 ? S 09:59 1:56 spamd child
root 2611 0.0 2.1 70880 67064 ? S 09:59 0:07 spamd child
root 2453 0.0 2.0 68148 63996 ? Ss 09:59 0:08 /usr/sbin/spamd -d -c -L -r /var/run/spamd.pid
named 2039 0.0 0.7 66020 22384 ? Ssl 09:59 0:03 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.7 66020 22384 ? Ssl 09:59 0:03 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.7 66020 22384 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.7 66020 22384 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
named 2039 0.0 0.7 66020 22384 ? Ssl 09:59 0:00 /usr/sbin/named -t /var/lib/named -u named
root 1479 0.0 0.4 17736 13028 ? Ss 09:59 0:00 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf
root 2559 0.0 0.3 29092 9348 ? Ss 09:59 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
root 2452 0.0 0.3 27596 9720 ? Sl 09:59 0:01 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
root 2452 0.0 0.3 27596 9720 ? Sl 09:59 0:01 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
root 2452 0.0 0.3 27596 9720 ? Sl 09:59 0:00 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
postgrey 2681 0.0 0.2 13348 9288 ? Ss 10:00 0:00 /usr/sbin/postgrey -d --inet=127.0.0.1:10031 --auto-whitelist-clients
wwwrun 18898 0.0 0.1 29200 5472 ? S 12:09 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 18897 0.0 0.1 29148 5196 ? S 12:09 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 18895 0.0 0.1 29200 5472 ? S 12:09 0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
И больше никакие процессы не росли. Т.е. память “выедалась” не запущенным приложением.
При этом, нормальной картиной было:
total used free shared buffers cached
Mem: 3025 2797 227 0 80 2178
-/+ buffers/cache: 539 2486
Swap: 10054 3 10051
И всё-равно система ночью падала. Причём всё время в messages был разный процесс, которому было отказано в памяти.
После чего я включил лог файервола. Даже днём у меня по 60-110 “левых” попыток соединиться, большинство из них на старшие порты. Весьма похоже на каких-то вирусов-зловредов.
Из “подозрительного” в правилах файервола был один TARPIT на все TCP-соединения, не удовлетворяющие разрешенным правилам для внешнего канала. Я его туда вставил, начитавшись всяких хвалебных отзывов. Прибил это правило. Аптайм 42 часа. Около 605 МБ занято приложеними в ОЗУ, около 200 МБ свободно, остальные 2 с лишним гига кеш.
Периодически за это время включаю лог файервола. Количество “левых” попыток соединиться не уменьшилось, но на работоспособность это не влияет. DROP-аются такие попытки нормально.
Попутно вопрос: кто-то знает предельное число соединений в секунду, которое “выдерживает” недорогая сетевая плата? Я уже начал подумывать об аппаратном файерволе.