goldbrick и vBulletin

Случилось так, что мне на руки попал достаточно посещаемый форум. Но после переноса с одного сервера на другой, он постоянно загружал сервер. Путем нехитрых манипуляций с iotop (так как нагрузка шла именно на диск), было выявлено что плагин отвечающий за добавление изображение/медиафайлов и прочей шушеры, под названием GoldBrick выдавал тонну файлов в директорию Zend cache.

Отключив опцию Zend cache, которая кстати доступна в админке самого плагина, я думал что все будет хорошо и проблема исчезнет. Ан нет, теперь вместо нагрузки на диск, появилась огромная нагрузка на mysql.

Недолго думая и просмотрев статистику запросов в Mysql, было отмечено большое количество запросов вида «SELECT * FROM gb_cache where hash=» «. То есть опять таки, этот негодный плагин издевался на сервером Mysql, выдавая кучу таких запросов при каждом обращении к страницам форума. Конечно, сам форум vBulletin ни разу не блещет толковым кодом для работы с Mysql, ибо для генерации одной странички запрашивает базу более 15 раз, а если в посте находятся множество аттачей, то это число возрастает очень сильно, так как каждый аттач добавляет еще более 15 запросов + кривые скрипты для быстрого ответа. Ну да хрен с ним с vBulletin.

Для решения пустых запросов к БД, пришлось немножко подредактировать «класс» goldbrick, а именно в файле goldbrick/includes/class_goldbrick.php, необходимо было ввести лишь одну дополнительную проверку в функции check_existing.

сменив

return $this->registry->db->query_first(»
SELECT * FROM » . TABLE_PREFIX . «gb_cache WHERE hash = ‘$uniques’»);

на

if ($uniques!=»") {

return $this->registry->db->query_first(»
SELECT * FROM » . TABLE_PREFIX . «gb_cache WHERE hash = ‘$uniques’»);

}

Ведь в случае если cache отключен, переменной $uniques (формирование уникального ID для hash кэша) быть просто не может, но для каждой страницы он упорно пытался его достать из базы.

В сухом остатке, был uptime ~ 25, стал 2-3. Такие дела.

 

 

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>