настройте производительность nginx php-fpm mysql

Я работаю nginx+php-fpm+mysql на виртуальном сервере с 8 ядрами, и 16G врезаются, Мое приложение является простым сервером поставщика API, который возвращает JSONs, сгенерированный из mysql базы данных по запросам. Наборы данных smost простой и только немногие большой Кбит. Но с высокой загрузкой 1000k пользователей в секунду. простые запросы занимают 10 секунд!!!.. который очень длинен. Я принимаю его MySQL, который медленно вызывает это ответы. Поскольку у меня есть тестовая база данных - тот же запрос к тестовой базе данных берет 1sek. Я могу быть, должен настроить мою конфигурацию mysql для выполнения запросов быстрее? Я использую mysqli и обязываю технику генерировать вывод с php,

вот мои конфигурации:

/etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user              nginx;
worker_processes  8;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


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


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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  100;

    #gzip  on;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;

}

/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql
# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so

# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
1
задан 14 June 2014 в 00:23
2 ответа

Скорее всего, причиной этого являются запросы к БД и недостаточное использование индексов.

Вам следует проверять SQL-запросы с помощью MySQL EXPLAIN, чтобы посмотреть, как получаются результаты.

Если в индексах БД нечего улучшать, то вам следует подумать о реализации кэширования готовых наборов данных с использованием либо PHP, либо Memcache.

.
0
ответ дан 4 December 2019 в 08:36

Я предполагаю, что это была проблема с вводом/выводом. Я решил ее, сделав много одинаковых файлов get.php в разных каталогах и перенаправив запросы к ним случайным образом... как круглый алгоритм. Это очень хорошо улучшило ситуацию.

Regards

0
ответ дан 4 December 2019 в 08:36

Теги

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