Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Dmitry.Karpov http://www. Гость
|
Добавлено: Пн Ноя 11 2002 16:59 Заголовок сообщения: Как ограничить памаять, выделяемую CGI-скрипту (Apache, FreeBSD'4.5)? |
|
|
Есть WWW-сервер под FreeBSD'4.5, на нем крутятся Apace, MySQL и CGI-скрипты. Отчет о процессах показывает, что engine.cgi занимает 398541k. Как ограничить ему объем выделяемой памяти, а то он сжирает все (и RAM, и Swap) и тормозит по самое не могу? |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Ноя 11 2002 18:36 Заголовок сообщения: Re: Как ограничить памаять, выделяемую CGI-скрипту (Apache, FreeBSD'4.5)? |
|
|
Насколько я представляю документацию, сама FreeBSD не квотирует выделяемую память. Более того, для исполнения всех процессов она повышает приоритет тех процессов, которые долго не выполнялись, что приводит к большому количеству среднеприоритетных процессов, если низкоприоритетные быстро создаются, например, при большом количестве http-запросов. Эти среднеприоритетные процессы, наверное, и перенапрягают память.
Радикальные решения (на мой взгляд): 1) снизить количество одновременно поддерживаемых соединений, что для web-сервера не интересно, 2) написать скрипт-диспетчер, который все запросы помещает в очередь, это приведет к увеличению времени отклика, но в общем должно повысить производительность, так как будут снижены расходы на поддержание большого числа активных процессов, а эти расходы обычно растут непропорционально росту количества процессов. |
|
Вернуться к началу |
|
|
:) Гость
|
Добавлено: Пн Ноя 11 2002 18:43 Заголовок сообщения: Re: Как ограничить памаять, выделяемую CGI-скрипту (Apache, FreeBSD'4.5)? |
|
|
и чего делает этот самый скрипт? на чем написано ? |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Ноя 11 2002 19:07 Заголовок сообщения: Все на тех же CGI, perl, php (про *sh молчу, хотя при известных усилиях можно попробовать). А делает то же, что делает диспетче |
|
|
- |
|
Вернуться к началу |
|
|
:) Гость
|
Добавлено: Пн Ноя 11 2002 19:28 Заголовок сообщения: Re: Все на тех же CGI, perl, php (про *sh молчу, хотя при известных усилиях можно попробовать). А делает то же, что делает дисп |
|
|
мой вопрос был к вопрошавшему ... хм, каламбур конечно |
|
Вернуться к началу |
|
|
TepKuH Гость
|
Добавлено: Пн Ноя 11 2002 19:39 Заголовок сообщения: Мне про такую штуку... |
|
|
расказывали на матриксе каждому пользователю выделяется определенные ресурсы(память, проц. время, и пр) соответсвенно всем поражденым ему процессам
ЗЫ. Скрипт у тебе божественный полгига мозга в ноль |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пн Ноя 11 2002 20:49 Заголовок сообщения: Мыслишки (+) |
|
|
Для Линуха я видел патчи к ядру, которые позволяют жестко распределить аппетиты системных процессов и пользовательских прог.
Одно не ясно. Что сделает система, если проге надо 50 мег ОЗУ, а система не дает? Видимо будет убита прога. Это не есть хорошо...
Тут по моему два пути. Либо прогу переписывать и умерять аппетиты, либо сервак добивать памятью, ОЗУ и т.п. штучками.
Есть еще третий вариант. Написать прогу, которая следит за ОЗУ и динамически распределяет свои аппетиты. Но создание таких прог задача не для слабонервных... |
|
Вернуться к началу |
|
|
IGOR79
Зарегистрирован: 15.11.2002 Сообщения: 3 Откуда: Kharkow
|
Добавлено: Пн Ноя 11 2002 23:49 Заголовок сообщения: Re: Мыслишки (+) |
|
|
на уровне apache: 1. apche 2.0 всё умеет это делать 2. suexec (модуль для апача) - посмотри что он может уровень системы: 3. login.conf |
|
Вернуться к началу |
|
|
:) Гость
|
Добавлено: Вт Ноя 12 2002 09:41 Заголовок сообщения: Re: Мыслишки (+) |
|
|
люди, во вы разошлись поскольку как я понимаю речь идет о скрипте обрабатывающем БД, то дело немного в другом. в 80 % подобных случаев тормоза связаны с неверной структурой построения баз, индексов, нерационально составленными селектами и т.п. т.е. перетряхиваем сам скрипт и базу, насколько это возможно. кроме того у самого mysql-ля проблемы с производительностью на больших БД, ну тормозит оно и усе ... |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Вт Ноя 12 2002 14:23 Заголовок сообщения: А сделай fork() раз 200 в секунду в течение 2 часов (+) |
|
|
Все-таки, думаю, речь идет не о скрипте как программе, а как о множестве процессов, которые порождаются при большом количестве обращений к серверу за короткое время. |
|
Вернуться к началу |
|
|
|