Демон на скалах - PullRequest
       1

Демон на скалах

5 голосов
/ 03 апреля 2012

Я пишу демон на PHP.Я не брал уроки ОС в колледже.Итак, мне интересно, какова статистика сервера / другой, на которую мне нужно обратить внимание, чтобы убедиться, что мой демон не потребляет слишком много системных ресурсов и сможет масштабироваться при наличии большего количества записей MySQL.По сути, мой демон обрабатывает несколько строк таблицы mysql.

Например, я понимаю, что мне нужно посмотреть, сколько времени занимает демон, чтобы обработать определенное количество строк, и объем используемой им памяти.Но как мне определить, нет ли утечки памяти?Кроме того, по каким другим системным параметрам я должен судить демона?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2012

Но как определить, происходит ли утечка памяти?

То, о чем вы здесь говорите, не имеет ничего общего с операционной системой.Вы правы, что беспокоитесь об использовании памяти.Правильный ответ на этот вопрос выходит далеко за рамки данного поста, но вы можете начать с рассмотрения того, как подсчет ссылок работает для управления памятью, и убедиться, что в вашей установке PHP настроена программа проверки циклических ссылок.График сгущается, когда вы обнаруживаете, что клиент mysql блокирует PHP во время его работы и игнорирует ограничения памяти PHP - поэтому, если вы извлечете слишком большой набор результатов, вы не узнаете об этом, пока не вернется mysql_query и ваш код не упадет: всегда используйтеLIMIT в запросах (или выбор PK) и для предпочтения запускайте демон под наблюдением.Протестируйте с использованием различных пределов памяти, меньших, чем вы планируете использовать в рабочей среде.

Обратите внимание, что PHP начнет делать больше памяти доступной для себя через сборщик мусора, когда считает, что ему не хватает памяти.

Напишите много вещей для файлов журнала!

0 голосов
/ 04 апреля 2012

В зависимости от того, как вы собираетесь запустить Daemon в Linux, и затем обработать много строк (100k + или что-то, что займет около 30 секунд) того, что вы ожидаете. Посмотрите, как быстро увеличивается использование памяти: при небольших задачах это происходит слишком быстро, вам нужен запущенный процесс.

Затем убедитесь, что вы сбросили ($ objectOrString), закройте все файлы и подключения к базе данных, как только вы закончите с ними: это поможет.

Опять же, в зависимости от того, что будет делать этот файл, вы можете разрешить ему завершиться и использовать задание cron, чтобы запустить его agian, чтобы PHP мог запустить свою сборку мусора для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...