Назад | Перейти на главную страницу

Linux Server не отвечает на TCP-соединения по прошествии некоторого времени. Как анализировать?

Мой сервер Ubuntu 11.04 в Интернете несколько дней ведет себя странно. Он отлично работает с некоторыми веб-приложениями Java. Затем внезапно он больше не принимает соединения. Когда я пытаюсь использовать ssh или http-соединение с моим сервером, я не получаю ответа, пока не истечу время ожидания. Но пинг работает отлично. nmap также работает:

Starting Nmap 5.21 ( http://nmap.org ) at 2011-08-29 10:52 CEST
Nmap scan report for ...
Host is up (0.020s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
443/tcp  open  https
3000/tcp open  ppp
3128/tcp open  squid-http

После перезагрузки все снова работает несколько часов.

Что бы это могло быть? Или как анализировать эту проблему?

Это действительно похоже на то, что у вас заканчивается память, а в системе нет свопа. Если системе Linux не хватает памяти, она больше не может принимать TCP-соединения, потому что для установления соединения требуется память. ICMP может ничего не понадобиться, поскольку нет состояния, которое нужно поддерживать.

Повсюду проверяйте настройки памяти и убедитесь, что вы не выделяете более 70% общей памяти для JVM (параметры -Xms и -Xmx).

Активируйте своп, если это еще не сделано, вы можете создать базовый файл подкачки где-нибудь на диске:

dd if=/dev/zero of=/mnt/swapfile bs=1M count=10240
mkswap /mnt/swapfile
swapon /mnt/swapfile

Если после этого ваша система снова зависнет, пришло время для более низкого уровня мониторинга.

-Xmx (максимальный размер кучи) - это не вся память, выделенная для jvm, другой значительный объем выделяется для PermSize (-XX: MaxPermSize) и еще немного для внутреннего использования. Используйте top или ps, чтобы узнать, сколько использует ваш jvm, и оставьте место для буферов os + (1 ГБ плюс 150 КБ на одновременное соединение - хорошее начало).

Вам следует взглянуть на свою службу Fail2ban, я столкнулся с той же проблемой с размещенным Linux-сервером, и это произошло из предварительно установленного файла конфигурации fail2ban.

Или это может быть DoS, как сказал mailq.