ограничить использование ресурсов сервера от php - PullRequest
0 голосов
/ 06 октября 2011

В моем веб-приложении мне нужно создать несколько файлов PDF и диаграмм.Дело в том, что когда пользователю нужно сгенерировать эти файлы, сервер достигает 100%.

ATM Я думаю использовать cron, который будет генерировать отчеты, которые могут потребоваться пользователю, и использовать только часть ресурсов сервера в течение более длительных периодов времени, а не все ресурсы в определенный момент.

Это то, что я думаю с теоретической точки зрения.Я могу быть не прав.Пожалуйста, поправьте меня.Вы знаете, как мне это сделать с помощью PHP?

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Есть много способов сделать это (и да, вы можете сделать это из PHP).

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

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

Если вы заметите существенное неблагоприятное воздействие, то решения:

  1. запустить необходимую обработку в изолированной программной среде с ограничением количества ресурсов, которые он может использовать
  2. запустить процесс на другом компьютере, где его влияние на другие процессы будет снижено до приемлемого уровня
  3. запускать процесс в то время, когда запланировано меньше других процессов

Запуск процесса через cron будет примером варианта 3, но вы явно спросили, как реализовать вариант 1.

Поскольку узким местом является ЦП, и снова , если вы видите влияние на другие транзакции , тогда два решения для метода 1 в Linux будут:

  1. запустить обработку в отдельном процессе, запущенном через 'nice'
  2. Если вы работаете в среде без потоков, возьмите в аренду curent pid (но не забывайте:сбросьте приоритет после его завершения).

Вам не нужен второй компьютер для второго метода - вы можете использовать набор задач, чтобы установить для процессора для большинства процессов (например) все, кроме одноговаших ядер - и зарезервируйте ядро ​​для запуска тяжелых процессов.

В любом случае вам следует ознакомиться с проблемами вызова долго выполняющихся процессов через веб-сервер.

Обратите внимание, что использование cron было бы разумным подходом, если вы хотите сгенерировать файлы до того, как они будут созданы.запрашивается - но если вы хотите сделать это по требованию, то «at» будет лучшим решением.

0 голосов
/ 06 октября 2011

Нет, не с PHP.

Есть несколько способов ограничить использование процессором процесса в Linux. Я нашел этот, чтобы быть самым элегантным: http://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/

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