Как предотвратить зависание Apache, когда кэш PHP APC полностью заполняется? - PullRequest
5 голосов
/ 18 февраля 2011

Когда кэш APC заполнен, он зависает Apache. Apache отвечает на запросы, но всегда ждет, пока кэш APC освободит некоторые ресурсы, но этого никогда не произойдет.

Я запускаю каждые 10 минут задание CRON со своим собственным небольшим сценарием удаления, который удаляет записи с истекшим сроком из APC. Хорошо, я мог бы добавить больше памяти в APC и / или я мог бы чаще запускать скрипт expunge. Но это не настоящее решение, я ищу новый способ решения проблемы.

Ответы [ 3 ]

1 голос
/ 08 марта 2011

Я считаю, что установка ttl изменяет поведение APC, когда кеш заполнен.По умолчанию, если ttl равен 0, APC должен очистить кеш при заполнении.Из руководства:

В случае, если кешу не хватает доступной памяти, кеш будет полностью удален, если ttl равен 0. В противном случае, если ttl больше 0, APCпопытка удалить просроченные записи.

1 голос
/ 08 мая 2011

Это не совсем окончательное решение, но я написал небольшой PHP APC expunge скрипт , который я предложил в своем вопросе.Этот скрипт запускается CRON каждые 10 минут и вручную удаляет просроченные элементы.Это далеко не идеальное решение, но, по крайней мере, оно очень помогает.

Я все еще ищу окончательное решение.

0 голосов
/ 18 февраля 2011

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

...