Maxim Dounin Wrote:
> Ну то есть вы тщательно проигнорировали всё то доброе и вечное, что
> nginx писал вам про некорректность вашей работы с файлами, и
> вместо того, чтобы исправить проблему, заткнули сообщение,
> дополнив файл пробелами? И, судя по тому, что сейчас у вас всё
> зацикливается - ещё и убрали из кода это дополнение пробелами?
> Почему-то вспоминается старый анекдот про японскую бензопилу. ;)
>
> Не надо так. Обновляйте файл атомарно, i.e., пишите новый файл, а
> потом делайте rename() в старое имя. И будет вам счастье.
>
> > Но проблему с зацикливанием, как я понимаю, в ближайшее время вы не
> сможете решить, и как самый простой вариант - отключить aio threads до лучших
> > времен?
>
> Самый простой вариант - починить обновление файла, сделав его
> атомарным.
это было году так в 2006-2007 в совершенно другом проекте, и тогда это показалось мне замечательным решением :)
а в этом проекте таких строчек в логах не помню, видно из-за того что sendfile был включен с самого начала и какие-то там дурацкие алармы не мозолили глаза :)
ок, последую вашей рекомендации с rename()
p.s. но вы бы все-таки как-то отразили суть данной беседы в документации. не один я меняю файлы через обычный fopen('w+'), и некоторые из таких тоже могут попасть на данный баг с aio threads. у меня то выделенный сервер с ксеоном и большим запасом по мощности, а вот обычные vds-ки могут не обрадоваться таким циклам