linux — Очередь сообщений CentOS IPC, заполняемая сообщениями из приложения PHP

У меня есть долго работающее PHP-приложение, которое порождает несколько дочерних процессов для запуска задач на виртуальной машине CentOS, и оно использует очередь сообщений SysV IPC (через msg_get_queue () и т. Д.) Для отправки событий в родительский процесс.

Проблема заключается в том, что, хотя дети хорошо выполняют msg_remove_queue () перед выходом, ресурсы сообщений, похоже, остаются на системном уровне. В конечном итоге это заполняет очередь сообщений, пока не достигнет kernel.msgni.

Самое смешное, что когда я бегу

ipcs

как пользователь, под которым запускается этот скрипт, я вижу, что очереди сообщений появляются и исчезают, как и ожидалось. Однако, когда я запускаю ту же команду, что и root, список очередей медленно и непрерывно увеличивается, и многие из них в списке:

0x00000000 1031634944 <user>  0          0            0

Я не эксперт в очереди сообщений SysV, поэтому я немного не уверен в том, какое решение лучше здесь, или есть ли хорошее решение. В настоящее время я установил для kernel.msgni значение 100 000 (!). Я не уверен, что это хорошая идея для коробки объемом 1 ГБ.

Обратите внимание, что разрешения равны 0, а количество используемых байтов равно 0. Таким образом, теоретически эти очереди не занимают места, хотя в какой-то момент я ожидал бы, что простое повторение системы приведет к загрузке системы.

Мои вопросы:

  1. Почему это происходит?
  2. Срок действия этих ресурсов истечет, истечет время или исчезнет?
  3. Есть ли какое-то решение, которого я не вижу?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]