Мы наблюдаем какое-то странное поведение, и мы не уверены, что это проблема с apache, php, mysql или ОС, поэтому перейдем к большому мозгу stackoverflow!
У нас есть Apache и mod_php, которые общаются с сервером mysql5. Иногда процесс будет зависать, пытаясь прочитать из файлового дескриптора.
Запуск одного из них (все процессы зависания показали одинаковые результаты) дал следующее:
[root@prweb133v ~]# strace -p 8450
Process 8450 attached - interrupt to quit
read(57, <unfinished ...>
Так что же он пытался прочитать?
[root@prweb133v ~]# lsof -p 8450
...
...
httpd 8450 apache 57u IPv4 5546599 TCP
prweb133v.local:36615->hadat.local:mysql (ESTABLISHED)
Это наш сервер MySQL! Хорошо, возможно, он пытался прочитать результаты запроса, подумал я. Проверка списка процессов на сервере MySQL, соединение было установлено, но в состоянии SLEEP.
Хммм.
Итак, я проверил netstat, чтобы увидеть, кто что пытался отправить / получить.
На веб-сервере:
[root@prweb133v ~]# netstat -t -n -a | grep 36615
tcp 0 5 172.23.179.6:36615 172.23.179.67:3306
ESTABLISHED
и на сервере MySQL было установлено соединение, но 0 в очередях отправки или получения.
Есть идеи, какими могут быть эти загадочные 5 байтов или почему они случайно не получают сервер mysql?
Ура!
Mike