Настройка Wordpress + nginx + php5-fpm?

Есть сайт на wordpress, посещаемость ~ 2000 в сутки, онлайн 100-300 человек.
Все это расположено на VPS хостинге с 4 CPU и 1 Gb RAM на связке пу vesta + nginx + apache + apc + mysql. Страницы для незарегистрированных пользхователей кэшируются и загружаются за доли секунды, но для зарегистрированных пользователей часто отваливается база mysql. Загрузка сервера при этом колеблется от 7 до 15.

Решил перенести все это на nginx + php-fpm + apc + percona (mysql). База теперь не отваливается, но возникла другая проблема - на загрузку страницы уходит теперь 5-10 секунд, несмотря на то что она отдается из кэша. При этом закрузка самого сервера не поднимается выше 3.5.

Подскажите, что можно настроить, чтобы ускорить загрузку страниц?

конфиг mysql:
[client]
port                           = 3306
socket                         = /var/run/mysqld/mysqld.sock
default-character-set          = utf8

[mysqld]
# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/run/mysqld/mysqld.sock
pid-file                       = /var/run/mysqld/mysqld.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000
skip-name-resolve
sql-mode                       = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate-is-now                 = 1
innodb                         = FORCE
innodb-strict-mode             = 1

# DATA STORAGE #
datadir                        = /var/lib/mysql/

# BINARY LOGGING #
log-bin                        = /var/lib/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 0
innodb-log-file-size           = 64M
innodb-flush-log-at-trx-commit = 0
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 592M

# LOGGING #
log-error                      = off
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = off


конфиг nginx:
user www-data;
worker_processes 4;
timer_resolution 100ms;
worker_rlimit_nofile 8192;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
	use epoll;
	multi_accept on;
}

http {
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 15;
	types_hash_max_size 2048;
	server_tokens off;
	client_max_body_size 8m;
	open_file_cache max=5000 inactive=20s;
	open_file_cache_valid 30s;
	open_file_cache_min_uses 2;
	open_file_cache_errors on;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	access_log off;
	error_log off;

	gzip on;
	gzip_disable "msie6";
	gzip_static     on;
	gzip_comp_level 5;
	gzip_min_length 1024;
	gzip_http_version 1.1;
	gzip_proxied     any;
	gzip_vary       on;
	gzip_types     text/plain text/css application/json application/x-javascript text/xml       application/xml application/xml+rss text/javascript application/javascript text/x-js;
	gzip_buffers 16 8k;

	fastcgi_buffer_size 128k;
	fastcgi_buffers 256 16k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}
  • Вопрос задан
  • 5852 просмотра
Пригласить эксперта
Ответы на вопрос 2
В первую очередь вам надо оптимизировать сам WP а не сервера конфиги менять. Надо смотреть почему запросы такие тяжёлые, сколько данных тянется, иногда тянется из БД мусор типа дизайна, шаблонов или путей к стилям css и когда всё будет исчерпано тогда... не тогда не надо сервер править надо WP менять. У меня на точно таком же сервере сайт с 30000 человек в сутки крутился и нормально.
Ответ написан
@Jony_B
Сталкивался с такой же проблемой - решил установкой кэширующего скрипта который всем кроме админа отдаёт статику.
Вот два скрипта - использую второй.
centavrus-opti.ru/skript-keshirovaniya-dlya-wordpr...
isif-life.ru/blogovedenie/maxcache-snigenie-nagruz... (основная страница скрипта временно недоступна, но почитать про скрипт можно в интернете, и да он платный)

Проблема с комментариями решается переносом комментариев на дискус или гиперкоментс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы