DrDragoN
@DrDragoN
Программист

Медленные запросы у удаленного MySQL?

Переношу проект на git и столкнулся с тем, что мне необходимо подключатся к удаленной базе, чтобы работать с актуальной информацией. Настроил связку nginx + php7, однако когда пытаюсь открыть страницу с запросами выполненные через mysqli, получаю ошибку типа mysqli::__construct(): (HY000/2002), либо страница очень медленно открывается (от 30 секунд и более). Сам сервер находится в дата-центре Москвы, а я в Забайкальском крае, пинг около 60мс. Разницы нет как подключаться к базе, используя туннель или прямое соединение

Пытался настроить репликацию с сервера на сервер находящиеся в одном дата-центре, но также были задержки
my.cnf
[client]
port                            = 3306
socket                          = /var/lib/mysql/mysql.sock

[mysqld_safe]
nice                            = 0
socket                           = /var/lib/mysql/mysql.sock
pid_file                          = /var/lib/mysql/mysql.pid
log_error                       = /var/log/mysql/error.log

[mysqld]
performance_schema
user                              = mysql
port                              = 3306
datadir                          = /var/lib/mysql
socket                           = /var/lib/mysql/mysql.sock
pid_file                          = /var/lib/mysql/mysql.pid
log_error                       = /var/log/mysql/error.log

skip_external_locking         = 1
skip_name_resolve             = 1
event_scheduler                 = 1

max_join_size                     = 1000000
max_sort_length                 = 1024
max_connections                = 900
max_allowed_packet           = 256M
max_connect_errors            = 1000

wait_timeout                       = 30
interactive_timeout             = 30
net_read_timeout                = 30
net_write_timeout               = 30

key_buffer_size                  = 32M
read_buffer_size                 = 4M
sort_buffer_size                  = 4M
read_rnd_buffer_size          = 4M

table_cache                        = 2G
table_open_cache              = 5000

max_heap_table_size         = 512M
tmp_table_size                   = 512M
tmpdir                                = /temp

query_cache_type              = 0
query_cache_size               = 0
query_cache_limit             = 0

innodb_open_files             = 35000
open_files_limit                 = 35000

join_buffer_size                 = 16777216
thread_cache_size             = 8

slow_query_log                 = 1
long_query_time               = 7.000000
log_queries_not_using_indexes   = 0
slow_query_log_file          = /var/log/mysql/long.log

innodb_read_io_threads          = 64
innodb_write_io_threads         = 64

innodb_buffer_pool_size             = 8G
innodb_buffer_pool_instances    = 8
innodb_lock_wait_timeout          = 60
innodb_log_file_size                    = 256M
innodb_log_files_in_group          = 8
innodb_log_buffer_size               = 16M
innodb_file_per_table                 = 1
innodb_flush_log_at_trx_commit  = 2
innodb_flush_method                = O_DIRECT

transaction-isolation                 = READ-COMMITTED
wsrep_on                                   = OFF
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 2
dima9595
@dima9595
Junior PHP
Скорей всего это из-за того, что сайт и БД на разных серверах. Помнится подобное делал. Разделял бд и сайт на разные сервера для лучшей производительности. Эффекта не было, наоборот, ещё медленнее стало. Хотя может быть я сам криворукий)
Ответ написан
Если в выборке много данных, то они просто могут не доходить из-за ограничений, смотрите конфиг
Решение так себе

Делайте репликацию
Ответ написан
Ваш ответ на вопрос

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

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