Ситуация такая. На нескольких серверах приблизительно одинаковой аппаратной и программной конфигурации стоит mpd5. Версии: 5.0 и 5.1. ОС: FreeBSD 6.3R. mpd обслуживает PPTP и PPPoE клиентов (около 200 одновременных соединений). Все отлично, но в какой-то момент времени, mpd перестает принимать входящие соединения. Уже установленные соединения работают отлично. В top'е вижу процесс mpd5 съедающий 100% CPU. #ps ax|grep mpd дает два процесса mpd5. Один съедает все ресурсы, другой работает нормально. Записи в syslog при этом не идут никакие. Если убить процесс, поедающий ресурсы, то все восстанавливается на круги своя. Входящие соединения идут, загрузка в норме. Немного покопавшись в логах и исходниках выяснил следующее: проблема возникает, когда mpd запускает какое-либо внешнее приложение, либо arp, либо скрипт поднятия интерфейса. В логи пишет нормальную команду, но такое ощущение, что при ее выполнении он просто запускает сам себя, т.е. вместо дочернего процесса второй родительский. Ну и, соответственно, ждет его завершения. Но "дочерний" mpd запускается демоном и завершаться не собирается. Поэтому "родительский" ждет до тех пор, пока "дочерний" не будет убит вручную. Похоже, что в аналогичной ситуации, FreeBSD 6.2R виснет намертво. Может кто-то подскажет, из-за чего может наблюдаться подобное поведение?
|