wordpress грузит БД, кеширование включено. Как оптимизировать?

HJ
На сайте с 14.02.2006
Offline
274
3358

В целях уменьшения нагрузки на сервер установил плагин WP Super Cache, сайт начал работать шустрее, но проблема полностью не решилась.

Команда top показывает, что основная нагрузка идёт на mysql. Кеширование, я думал, должно было свести кол-во запросов к минимуму.

В шаблоне сделал самые очевидные изменения: вывод путей к стилями и вывод кодировки сделал статичными, а не через функции wp.

Подскажите, как проанализировать, что именно и почему так грузит БД. Как улучшить ситуацию?

[umka]
На сайте с 25.05.2008
Offline
456
#1

В mysql смотрите "SHOW PROCESSLIST".

А вот на тему "как улучшить" можно долго философствовать )

Лог в помощь!
Fruit
На сайте с 15.07.2008
Offline
166
#2
[Удален]
#3

Попробуйте DB Cache Reloaded, он хорошо кеширует mysql запросы.

happy-joker:
Подскажите, как проанализировать, что именно и почему так грузит БД. Как улучшить ситуацию?

Покажите список плагинов.

HJ
На сайте с 14.02.2006
Offline
274
#4

Last Updated: 2009-12-10. Не обновляется, и будущее его неизвестно. К тому же кеширование неплохо осуществляется WP Super Cache

[umka:
]В mysql смотрите "SHOW PROCESSLIST".
А вот на тему "как улучшить" можно долго философствовать )

Да, смотрю SHOW FULL PROCESSLIST; Но какие выводы из этого сделать?

happy-joker добавил 08.04.2011 в 12:00

nomads:
Попробуйте DB Cache Reloaded, он хорошо кеширует mysql запросы.

Спасибо за наводку, поизучаю данный плагин.

nomads:
Покажите список плагинов.

Активировано всего 3 плагина: All in One SEO Pack, Contextual Related Posts, WP Super Cache

В двух местах в шаблоне последние статьи выводятся подобным образом:


<?php if (!is_home()) {
$posts_new = get_posts('category=21&numberposts=5');
foreach ($posts_new as $post_new) :
echo '<img width="84" height="70" src="';
$key="smallimg"; echo get_post_meta($post_new->ID, $key, true);
echo '<a href="';
echo get_permalink($post_new->ID);
echo '">';
echo $post_new->post_title;
endforeach;
} ?>

Это может создавать большую нагрузку?

[umka]
На сайте с 25.05.2008
Offline
456
#5

В списке процессов (show processlist) как правило, толпятся запросы, если они есть. И если время выполнения у них по несколько секунд, то надо их изучать и оптимизировать.

Вообще, мне кажется, ваша нагрузка надуманная :)

Покажите вывод команды top и поясните, каким образом вы определили, что на mysql идёт нагрузка.

HJ
На сайте с 14.02.2006
Offline
274
#6
'[umka:
;8789863']Вообще, мне кажется, ваша нагрузка надуманная :)
Покажите вывод команды top и поясните, каким образом вы определили, что на mysql идёт нагрузка.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

19582 mysql 15 0 361m 39m 5704 S 147.5 3.9 1803:39 mysqld
11417 apache 17 0 327m 52m 3564 R 16.9 5.1 0:23.00 httpd
30539 apache 15 0 327m 52m 3544 S 11.6 5.1 0:08.13 httpd
26300 apache 15 0 327m 52m 3808 S 9.6 5.2 0:09.56 httpd
24130 apache 15 0 327m 52m 3560 S 2.7 5.1 0:10.28 httpd
11972 apache 15 0 327m 52m 3520 S 2.3 5.1 0:01.60 httpd

Определили по цифре 147.5% :)

Плюс на тарифе http://www.rusonyx.ru/vps/vps-profi.php нагрузка на проц идёт 100%-500% порой. При относительно не очень большой посещаемости в 15к юзеров в сутки.

[umka]
На сайте с 25.05.2008
Offline
456
#7

Весьма странно. И такая цифра постоянно держится или скачками? Сайт при этом тормозит?

Попробуйте включить лог медленных запросов:

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

Если в него ничего не попадает, значит, действительно много мелких запросов.

Попробуйте с ними бороться с помощью query cache

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

HJ
На сайте с 14.02.2006
Offline
274
#8
'[umka:
;8790029']Весьма странно. И такая цифра постоянно держится или скачками? Сайт при этом тормозит?

Скачками. Причём большие цифры наблюдаются значительно чаще. Сайт не тормозит, если срабатывает WP Super Cache и страница грузится из кеша. Если не из кеша, то тормозит.

'[umka:
;8790029']
Попробуйте включить лог медленных запросов:
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

Если в него ничего не попадает, значит, действительно много мелких запросов.
Попробуйте с ними бороться с помощью query cache
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

Спасибо за наводку. Буду изучать, что тут к чему.

Asin
На сайте с 26.12.2008
Offline
57
#9

Если критично , статику можно переложить на сторонние сервера.

Также разгружают двиг подобные плагины:

http://wordpress.org/extend/plugins/use-google-libraries/

Также с другими плагинами кеша оптимизировать попробуйте

http://wordpress.org/extend/plugins/w3-total-cache/

HJ
На сайте с 14.02.2006
Offline
274
#10

Нашёл свежую статью на хабре - Ускоряем базу данных веб-сайта. Может, еще кому будет интересно.

Но тут надо быть технически подкованным, чтобы всё это проделать. Мне практически с нуля разбираться придётся.

Asin:
Если критично , статику можно переложить на сторонние сервера.

Со статикой, судя по всему, проблем нет, она дает малую нагрузку.

Asin:
Также с другими плагинами кеша оптимизировать попробуйте http://wordpress.org/extend/plugins/w3-total-cache/

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий