У нас возникла проблема с нашими веб-серверами, из-за которой все больше и больше процессов Apache зависают, ожидая, что блокировка файла (вызванная PHP flock ()) каким-то образом разрешается, но никогда не происходит.В конечном итоге сайт становится все медленнее и медленнее и, наконец, полностью останавливается, пока Apache не будет перезапущен.
Я работаю над теорией, что почему-то плохой код стоит за этим, возможно, в нашем собственном механизме дискового кэша.Но я не могу отследить это.(Мы работаем в Ubuntu.)
Мой вопрос: как мне определить, к какому файлу или файлам он привязан?Если бы я мог видеть, где зависание, мне было бы намного легче выяснить, где плохой код.Когда я делаю эту команду:
ps -o pid,tt,user,fname,wchan -C apache2
я получаю это:
730 ? www-data apache2 flock_lock_file_wait
3085 ? www-data apache2 flock_lock_file_wait
5393 ? www-data apache2 flock_lock_file_wait
5397 ? www-data apache2 flock_lock_file_wait
11181 ? www-data apache2 flock_lock_file_wait
30280 ? www-data apache2 flock_lock_file_wait
Могу ли я как-нибудь перейти от этого к определению, какой именно файл Apache заблокирован или ожидает?