Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[DEV] Auto enable/disable GZIP compression

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

Думаю, что идея неплохая и, раз мод "Для нужд своего форума", то может имеет смыл вообще отказаться от записей в базу?
То есть, вместо считывания $board_config['gzip_compress'], проверять $loadavg_array[2]
И $loadavg_array[2] - это загруженность за 5 минут, может лучше $loadavg_array[1] ??

А вот реально, кто-нибудь выяснил, насколько этот GZIP кушает память и процессор ?
У себя, на слабом сервере, GZIP выключил, иначе, действительно, при большом наплыве, тормоза жуткие.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Jovani
Jovani писал(а):может имеет смыл вообще отказаться от записей в базу?
Если внимательно прочитать эти 2 условия, то можно заметить, что записи в базу происходят только один раз в тот момент когда уровень load average проходит пороговое значение и когда надо переключить on на off или наоборот.
Jovani писал(а):А вот реально, кто-нибудь выяснил, насколько этот GZIP кушает память и процессор ?
У себя, на слабом сервере, GZIP выключил, иначе, действительно, при большом наплыве, тормоза жуткие.
Вот у тебя есть шанс это проверить :)
Не помню точно, но сжатие достаточно ресурсоёмкая операция примерно 50-70% нагрузки.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

Siava писал(а):Если внимательно прочитать эти 2 условия, то можно заметить, что записи в базу происходят только один раз в тот момент когда уровень load average проходит пороговое значение
Это я видел, только при таком алгоритме, "один раз", автоматически стремится стать "всегда" (при достижении этого "порога" загруженности).
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Jovani
После того, как я нашёл в своём форуме узкое место, из-за которого происходила перегрузка Load average до 4 уже не часто доползает :)
Раньше оно никогда на 4 не останавливалось и если уж нагрузка росла, то до 5-6 стабильно, не останавливаясь на 4 =) так что вот такие делы :roll: Я же писал, что этот порог выбирается экспериментальным путём в зависимости от вашего сервера :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

Сообщение crash »

Siava писал(а):То есть это?
нет.
это:
но интерпретация его приемлемых значений зависит от конкретной ОС.В BSD это: 0-1 — отлично, 1-3 — приемлемо, 3-5 — настораживающе, 5-INF — неприемлемо. Для Linux я этих цифр не знаю, народ подскажет
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

Siava писал(а):Я же писал, что этот порог выбирается экспериментальным путём в зависимости от вашего сервера
Нет, тут я согласен на 100%.
Я подразумевал, что сама идея, очень хорошая, но вот над реализацией, наверно, стоит подумать - может все-такие есть лучшие варианты, чем запись базу. Хотя, конечно, это все ИМХО, и оптимальное решение выбирать нужно исходя из многих ньюансов ...

Добавлено спустя 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

Любой из этих приемов, облегчит загруженность вносимую самим модом.
Есть конечно и другие идеи, но это позже, а пока, приатачиваю пример скрипта, где вытаскиваются и другие интересные переменные.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

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];
}
Всё работает, показание считывается через каждые 10 раз, но вот отображается в футере (у меня там выводится значиение) как раз через каждые 10 раз, тогда как в остальных случаях переменная $loadavg становится неопределена.

Jovani писал(а):1 - Условие проверки loadavg добавить в условие проверки:
if( function_exists(ob_gzhandler) && $board_config['gzip_compress'] == 1)
Ну и записи в базу соответственно не делать.
Первые строки понял, про записи в базу опять не понял :roll: :oops: :lol:

Добавлено спустя 32 секунды:

P.S. скриптик интересный :) у меня есть лучше
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

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, и как-то по другому ....
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

Сейчас перешел на FreeBSD
Там, естественно нет '/proc/loadavg'
Нмикто не пытался определить там текущую нагрузку?
Нашел функцию для определения загрузки методом PHP:

Код: Выделить всё

function loadavg ()
{
$s = $this->grab_key('vm.loadavg');
$s = ereg_replace('{ ', '', $s);
$s = ereg_replace(' }', '', $s);
$results = explode(' ', $s);

return $results;
}
Но, что-то не получается определить :(
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

Сообщение crash »

вытащить из uptime может получиться?
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Jovani
Jovani писал(а):Сейчас перешел на FreeBSD
Там, естественно нет '/proc/loadavg'
Странный тогда FreeBSD на http://www.sertolovo.ru/forum/ :lol: - там есть /proc/loadavg :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев

Сообщение Jovani »

Не знаю даже что и сказать ...

В общем, например в vbulletin проверка loadavg встроена.
У кого FreeBSD - не работало до последней версии 3.5.xx

Весь их форум забит подобными вопросами - почему, у кого FreeBSD, не отображается loadavg
http://www.vbulletin.org/forum/showpost ... tcount=149

В версии 3.5.xx они исправили это.
Глянуть бы что там они наваяли :)

А директории proc/loadavg, увы у меня нету ...
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

Jovani
хм... вот
вобла 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
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

Сообщение crash »

наверное тут ключевое слово
[R: R@m$e$ :U] писал(а):PHP_OS == 'Linux'
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

crash
я обратил на это внимание =)))
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y

Вернуться в «Бета-версии модов для phpBB 2.0.x»