[DEV] Auto enable/disable GZIP compression
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Думаю, что идея неплохая и, раз мод "Для нужд своего форума", то может имеет смыл вообще отказаться от записей в базу?
То есть, вместо считывания $board_config['gzip_compress'], проверять $loadavg_array[2]
И $loadavg_array[2] - это загруженность за 5 минут, может лучше $loadavg_array[1] ??
А вот реально, кто-нибудь выяснил, насколько этот GZIP кушает память и процессор ?
У себя, на слабом сервере, GZIP выключил, иначе, действительно, при большом наплыве, тормоза жуткие.
То есть, вместо считывания $board_config['gzip_compress'], проверять $loadavg_array[2]
И $loadavg_array[2] - это загруженность за 5 минут, может лучше $loadavg_array[1] ??
А вот реально, кто-нибудь выяснил, насколько этот GZIP кушает память и процессор ?
У себя, на слабом сервере, GZIP выключил, иначе, действительно, при большом наплыве, тормоза жуткие.
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Jovani

Не помню точно, но сжатие достаточно ресурсоёмкая операция примерно 50-70% нагрузки.
Если внимательно прочитать эти 2 условия, то можно заметить, что записи в базу происходят только один раз в тот момент когда уровень load average проходит пороговое значение и когда надо переключить on на off или наоборот.Jovani писал(а):может имеет смыл вообще отказаться от записей в базу?
Вот у тебя есть шанс это проверитьJovani писал(а):А вот реально, кто-нибудь выяснил, насколько этот GZIP кушает память и процессор ?
У себя, на слабом сервере, GZIP выключил, иначе, действительно, при большом наплыве, тормоза жуткие.

Не помню точно, но сжатие достаточно ресурсоёмкая операция примерно 50-70% нагрузки.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Это я видел, только при таком алгоритме, "один раз", автоматически стремится стать "всегда" (при достижении этого "порога" загруженности).Siava писал(а):Если внимательно прочитать эти 2 условия, то можно заметить, что записи в базу происходят только один раз в тот момент когда уровень load average проходит пороговое значение
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Jovani
После того, как я нашёл в своём форуме узкое место, из-за которого происходила перегрузка Load average до 4 уже не часто доползает
Раньше оно никогда на 4 не останавливалось и если уж нагрузка росла, то до 5-6 стабильно, не останавливаясь на 4 =) так что вот такие делы
Я же писал, что этот порог выбирается экспериментальным путём в зависимости от вашего сервера 
После того, как я нашёл в своём форуме узкое место, из-за которого происходила перегрузка Load average до 4 уже не часто доползает

Раньше оно никогда на 4 не останавливалось и если уж нагрузка росла, то до 5-6 стабильно, не останавливаясь на 4 =) так что вот такие делы


Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- Former team member
- Сообщения: 6517
- Стаж: 20 лет 9 месяцев
- Откуда: Бердск
нет.Siava писал(а):То есть это?
это:
но интерпретация его приемлемых значений зависит от конкретной ОС.В BSD это: 0-1 — отлично, 1-3 — приемлемо, 3-5 — настораживающе, 5-INF — неприемлемо. Для Linux я этих цифр не знаю, народ подскажет
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Нет, тут я согласен на 100%.Siava писал(а):Я же писал, что этот порог выбирается экспериментальным путём в зависимости от вашего сервера
Я подразумевал, что сама идея, очень хорошая, но вот над реализацией, наверно, стоит подумать - может все-такие есть лучшие варианты, чем запись базу. Хотя, конечно, это все ИМХО, и оптимальное решение выбирать нужно исходя из многих ньюансов ...
Добавлено спустя 5 часов 37 минут 33 секунды:
Кстати, некоторые идеи такие:
1 - Условие проверки loadavg добавить в условие проверки:
if( function_exists(ob_gzhandler) && $board_config['gzip_compress'] == 1)
Ну и записи в базу соответственно не делать.
2 - Так, как loadavg все равно, достаточно инерционная переменная, то наверно нет смысла лезть в cat/proc/loadavg при каждой генерации страницы.
Наверно, будет достаточно мерять ее, например раз в 10 - 20 сгенерированных страницах, что-то типа:
if (mt_rand(1,10) == 1)
{
....
}
Ведь, думаю, прочитать cat/proc/loadavg на порядок труднее, чем сгенерировать mt_rand
Любой из этих приемов, облегчит загруженность вносимую самим модом.
Есть конечно и другие идеи, но это позже, а пока, приатачиваю пример скрипта, где вытаскиваются и другие интересные переменные.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Решил проверить подобную инструкцию:Jovani писал(а):Наверно, будет достаточно мерять ее, например раз в 10 - 20 сгенерированных страницах, что-то типа:
if (mt_rand(1,10) == 1)
{
....
}
Код: Выделить всё
if (mt_rand(1,10) == 1)
{
$loadavg_array = explode(" ", exec("cat /proc/loadavg"));
$loadavg = $loadavg_array[1];
}
Первые строки понял, про записи в базу опять не понялJovani писал(а):1 - Условие проверки loadavg добавить в условие проверки:
if( function_exists(ob_gzhandler) && $board_config['gzip_compress'] == 1)
Ну и записи в базу соответственно не делать.



Добавлено спустя 32 секунды:
P.S. скриптик интересный

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Siava писал(а):Первые строки понял, про записи в базу опять не понял
Код: Выделить всё
if( function_exists(ob_gzhandler) && $board_config['gzip_compress'] == 1 && $loadavg < 4 )
{
отдаем сжатым
}
else
{
несжатый
}
ЗЫ
Но, тогда от mt_rand нужно отказаться.
Добавлено спустя 29 минут 3 секунды:
PPS
Дабавлю, что (mt_rand(1,10) == 1 это я для примера привел.
Реально, наверно можно 1 из 100, и как-то по другому ....
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Сейчас перешел на FreeBSD
Там, естественно нет '/proc/loadavg'
Нмикто не пытался определить там текущую нагрузку?
Нашел функцию для определения загрузки методом PHP:
Но, что-то не получается определить 
Там, естественно нет '/proc/loadavg'
Нмикто не пытался определить там текущую нагрузку?
Нашел функцию для определения загрузки методом PHP:
Код: Выделить всё
function loadavg ()
{
$s = $this->grab_key('vm.loadavg');
$s = ereg_replace('{ ', '', $s);
$s = ereg_replace(' }', '', $s);
$results = explode(' ', $s);
return $results;
}

-
- Former team member
- Сообщения: 6517
- Стаж: 20 лет 9 месяцев
- Откуда: Бердск
вытащить из uptime может получиться?
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Jovani
- там есть /proc/loadavg 
Странный тогда FreeBSD на http://www.sertolovo.ru/forum/Jovani писал(а):Сейчас перешел на FreeBSD
Там, естественно нет '/proc/loadavg'


Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Не знаю даже что и сказать ...
В общем, например в vbulletin проверка loadavg встроена.
У кого FreeBSD - не работало до последней версии 3.5.xx
Весь их форум забит подобными вопросами - почему, у кого FreeBSD, не отображается loadavg
http://www.vbulletin.org/forum/showpost ... tcount=149
В версии 3.5.xx они исправили это.
Глянуть бы что там они наваяли
А директории proc/loadavg, увы у меня нету ...
В общем, например в vbulletin проверка loadavg встроена.
У кого FreeBSD - не работало до последней версии 3.5.xx
Весь их форум забит подобными вопросами - почему, у кого FreeBSD, не отображается loadavg
http://www.vbulletin.org/forum/showpost ... tcount=149
В версии 3.5.xx они исправили это.
Глянуть бы что там они наваяли

А директории proc/loadavg, увы у меня нету ...
-
- phpBB Maniac
- Сообщения: 1464
- Стаж: 20 лет 3 месяца
- Откуда: Novosibirsk,RU
Jovani
хм... вот
вобла 3.5.0 голд... или надо новее?
хм... вот
вобла 3.5.0 голд... или надо новее?
Код: Выделить всё
// #############################################################################
// start server too busy
$servertoobusy = false;
if ($vbulletin->options['loadlimit'] > 0 AND PHP_OS == 'Linux' AND @file_exists('/proc/loadavg') AND $filestuff = @file_get_contents('/proc/loadavg'))
{
$loadavg = explode(' ', $filestuff);
if (trim($loadavg[0]) > $vbulletin->options['loadlimit'])
{
$servertoobusy = true;
}
}
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)
Оставь благодарность, подтверди работоспособность совета.
ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)
Оставь благодарность, подтверди работоспособность совета.
ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
-
- Former team member
- Сообщения: 6517
- Стаж: 20 лет 9 месяцев
- Откуда: Бердск
наверное тут ключевое слово
[R: R@m$e$ :U] писал(а):PHP_OS == 'Linux'
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
-
- phpBB Maniac
- Сообщения: 1464
- Стаж: 20 лет 3 месяца
- Откуда: Novosibirsk,RU
crash
я обратил на это внимание =)))
я обратил на это внимание =)))
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)
Оставь благодарность, подтверди работоспособность совета.
ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)
Оставь благодарность, подтверди работоспособность совета.
ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y