Информация Обсуждение настроек VPS сервера для PrestaShop

попробуйте убрать apache связка nginx+php-fpm намного продуктивней

Сейчас настроили связку nginx+apache+mod_php, говорят, что в целом сейчас эта связка считается самой быстрой (тут вопрос). Настроили сжатие и кеширование и на первый взгляд задержек уже таких не наблюдается.

Еще сталкивался с такой информацией, что у mysql есть переменная в конфиге connect-timeout. Из документации к mysql удалось выяснить:
"connect-timeout: Время ожидания для соединения в секундах. Для Linux это время ожидания используется также для ожидания первого ответа с сервера."
На данный момент этот параметр равен 60, но некоторые пробовали его ставить '1' и якобы это значительно ускоряло работу. Сталкивался кто-нибудь может тоже с таким?
 
Сейчас настроили связку nginx+apache+mod_php, говорят, что в целом сейчас эта связка считается самой быстрой (тут вопрос). Настроили сжатие и кеширование и на первый взгляд задержек уже таких не наблюдается.

Еще сталкивался с такой информацией, что у mysql есть переменная в конфиге connect-timeout. Из документации к mysql удалось выяснить:
"connect-timeout: Время ожидания для соединения в секундах. Для Linux это время ожидания используется также для ожидания первого ответа с сервера."
На данный момент этот параметр равен 60, но некоторые пробовали его ставить '1' и якобы это значительно ускоряло работу. Сталкивался кто-нибудь может тоже с таким?
у меня connect_timeout = 5
 
вот это при этом лучше вынести наверх, под именем сервера, к примеру:
Примерно вот так правильно?

Изменил:
Cache-Control: max-age=2592000;
gzip on
убрал expires -1;
Cache-Control public; <- убрал кавычки

Значит ли, что самый внутренний location имеет приоритет во всем? например в кэшировании
Код:
server {
listen 8.8.8.8:80;
server_name site.ru www.site.ru;
error_log /var/log/apache2/domains/site.ru.error.log error;

Отсюда (location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html$) тогда надо убрать png jpg и другие добавляемые?
location / {
proxy_pass http://8.8.8.8:80:8080;
}

location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html$
{
root /home/admin/web/site.ru/public_html;

location \.png  { access_log off; log_not_found off; add_header Cache-Control "max-age=2592000, public"; gzip on; }
location \.jpg  { access_log off; log_not_found off; add_header Cache-Control "max-age=2592000, public"; gzip on; }

access_log /var/log/apache2/domains/site.ru.log combined;
access_log /var/log/apache2/domains/site.ru.bytes bytes;
add_header Cache-Control public;
try_files $uri @fallback;
}
 
Последнее редактирование:
@yuazakharov, выносите комментарии из кода, сложновато читать.
Отсюда (location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html$) тогда надо убрать png jpg и другие добавляемые?
вообще удалить этот локэйшн, все png jpg и т.п. сделать отдельными локейшенами.
эту рекомендацию озвучивал автор nginx Игорь Сысоев неоднократно - использовать регулярки только там, где без них нельзя обойтись, и именованые локейшены - лучшая альтернатива.

какая у вас цель? включить кэширование обратно?
тогда вместо
location \.png { access_log off; log_not_found off; expires -1; gzip off; }
сделайте так
location \.png { access_log off; log_not_found off; expires max; gzip off; }
и gzip для картинок включать не стоит

upd
похоже, для полного отключения кэша нужно выставлять для верности заголовок
add_header Cache-Control must-revalidate;

про кэширование, с картинками
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Сейчас настроили связку nginx+apache+mod_php, говорят, что в целом сейчас эта связка считается самой быстрой.
не совсем так, данные устарели :)
apache+mod_php действительно быстрее чем apache+php-fpm, но с учётом выхода пхп7 утверждать, что он быстрее чем nginx+php-fpm - весьма спорно.
тут сильно зависит от конфигов, скриптов, и нжинкс в любом случае лучше себя покажет при больших нагрузках/одновременных подключениях, при этом будет есть меньше памяти.
и правильно настроить апач сложнее чем nginx. так, как его настраивают повсеместно - спихивая всю логику по папкам в .htaccess - не способствует быстрой работе.
Еще сталкивался с такой информацией, что у mysql есть переменная в конфиге connect-timeout. Из документации к mysql удалось выяснить:
вы путаете тёплое с мягким. то, о чём вы пишете, относится к php:
Для просмотра ссылки Войди или Зарегистрируйся
а переменная в конфиге mysql как-бы немного не об этом:
Для просмотра ссылки Войди или Зарегистрируйся
The number of seconds that the Для просмотра ссылки Войди или Зарегистрируйся server waits for a connect packet before responding with Bad handshake. The default value is 10 seconds.
лучше оставьте в покое эту настройку, вы ничего так не ускорите, а сломать можете.
 
Последнее редактирование:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 64M
max_allowed_packet = 10M
tmp_table_size = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 128K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 64M
thread_cache_size = 4
query_cache_size = 16M
query_cache_limit = 1M
innodb_buffer_pool_size = 900M
innodb_buffer_pool_instances = 1
join_buffer_size = 1M

innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_io_capacity = 50000
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED

innodb_support_xa = 0
innodb_commit_concurrency = 8
innodb_old_blocks_time = 1000

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
Для просмотра ссылки Войди или Зарегистрируйся


Здравствуйте!
Подскажите пожалуйста а какой конфиг лучше использовать для 2-х процессорного сервера 8 Гигов оперативки?
У меня сейчас стоит вот так:
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

#
# The MySQL Client configuration file.
#
# For explanations see
# Для просмотра ссылки Войди или Зарегистрируйся

#[client]
#port = 3306
#socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /var/tmpfs
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
character-set-server=utf8
default-storage-engine=INNODB
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer_size = 512M

#max_join_size = 32M
#thread_stack = 512K
thread_cache_size = 32

# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched

#myisam-recover = BACKUP
max_connections = 600

#thread_concurrency = 5
#
# * Query Cache Configuration
#

query_cache_limit = 664M
query_cache_size = 512M

#sort_buffer = 8M
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=248M

tmp_table_size = 125M
max_heap_table_size = 2568M

read_buffer_size = 64K
read_rnd_buffer_size = 256K

table_open_cache=3000
#max_sort_length= 512

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
general_log_file = /var/log/mysql/mysql.log
general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
log_error = /var/log/mysql/mysql.err
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 3
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M

#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
#innodb_flush_method = O_DIRECT
#innodb-log-file-size = 256M
#innodb_log_files_in_group = 2
#innodb_additional_mem_pool_size = 20M

innodb_log_buffer_size=9M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_thread_concurrency=17
innodb_autoextend_increment=64M
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0

back_log=70
flush_time=0
join_buffer_size=512K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4110
query_cache_type=1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000



[mysqldump]
quick
quote-names
#max_allowed_packet = 256M

#[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

#[isamchk]
#key_buffer = 32M
 
Здравствуйте!
Подскажите пожалуйста а какой конфиг лучше использовать для 2-х процессорного сервера 8 Гигов оперативки?
У меня сейчас стоит вот так:
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

#
# The MySQL Client configuration file.
#
# For explanations see
# Для просмотра ссылки Войди или Зарегистрируйся

#[client]
#port = 3306
#socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /var/tmpfs
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
character-set-server=utf8
default-storage-engine=INNODB
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer_size = 512M

#max_join_size = 32M
#thread_stack = 512K
thread_cache_size = 32

# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched

#myisam-recover = BACKUP
max_connections = 600

#thread_concurrency = 5
#
# * Query Cache Configuration
#

query_cache_limit = 664M
query_cache_size = 512M

#sort_buffer = 8M
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=248M

tmp_table_size = 125M
max_heap_table_size = 2568M

read_buffer_size = 64K
read_rnd_buffer_size = 256K

table_open_cache=3000
#max_sort_length= 512

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
general_log_file = /var/log/mysql/mysql.log
general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
log_error = /var/log/mysql/mysql.err
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 3
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M

#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
#innodb_flush_method = O_DIRECT
#innodb-log-file-size = 256M
#innodb_log_files_in_group = 2
#innodb_additional_mem_pool_size = 20M

innodb_log_buffer_size=9M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_thread_concurrency=17
innodb_autoextend_increment=64M
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0

back_log=70
flush_time=0
join_buffer_size=512K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4110
query_cache_type=1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000



[mysqldump]
quick
quote-names
#max_allowed_packet = 256M

#[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

#[isamchk]
#key_buffer = 32M
не вылетает база? :)

выключите или поставьте не больше нескольких мегабайт query_cache_size, key_buffer_size
innodb_flush_method = O_DIRECT можно раскомментировать
innodb_open_files=300 добавьте хотя бы нолик
max_connections = 150, меняйте осторожно - влияет на память
innodb_thread_concurrency=0 - утилизируются все доступные потоки

это навскидку. детально разбираться в вашем конфиге бесплатно и без доступа к серверу не готов %)

доки mysql, mysqltuner и Для просмотра ссылки Войди или Зарегистрируйся в помощь.
 
не вылетает база? :)

выключите или поставьте не больше нескольких мегабайт query_cache_size, key_buffer_size
innodb_flush_method = O_DIRECT можно раскомментировать
innodb_open_files=300 добавьте хотя бы нолик
max_connections = 150, меняйте осторожно - влияет на память
innodb_thread_concurrency=0 - утилизируются все доступные потоки

это навскидку. детально разбираться в вашем конфиге бесплатно и без доступа к серверу не готов %)

доки mysql, mysqltuner и Для просмотра ссылки Войди или Зарегистрируйся в помощь.
Можете скинуть свои актуальные конфиги (бд,nginx,php) под 3-4 мб оперативки? Под связку nginx+php-fpm. Интересно сравнить с тем, которые использую.
 
не вылетает база? :)

Вроде бы работает, но прислушаюсь к Вам.
Только есть ряд вопросов - почему стоит уменьшить до нескольких мегабайт - когда везде рекомендуется больше и даже в калькуляторе стоит 64 Мб ?
В Вашей конфигурации не нашел упоминания innodb_open_files , а у меня предлагаете 3000 поставить - почему так ?
 
почему стоит уменьшить до нескольких мегабайт
Не знаю, где везде и кто рекомендует. Единственная рекомендация от меня - читать доки, а не слепо копировать настройки из интернета, или доверять форумным "экспертам" вроде меня :) Я не держу все это в голове, а вспоминать/искать инфу, чтобы объяснить каждую настройку - на это времени нет, сори.
mysqltuner и калькулятор будут куда лучшим подспорьем.

С кэшем такая штука, что это ни разу не серебряная пуля. больше=лучше тут не работает. Конкретно этот кэш блокирует таблицу в момент поиска нужного индекса, если записей будет много - вместо ускорения вы получите замедление. Пока процессор будет искать нужный индекс - другие запросы будут висеть на блокировке.
В современных серверах повсеместно ссд/нвме диски. Вполне возможно, что базе быстрее будет выполнить запрос и прочитать с диска, чем искать что-то в индексе.
Что, по-вашему, хранит кэш запросов к базе? Сколько у вас одинаковых запросов?
Есть простые методики расчитать, сколько вам нужно под этот вид кэша, под вашу базу. Поищите, это не сложно.

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

Можете скинуть свои актуальные конфиги
Сори, нет. Не помню где сколько памяти, и вам они подойдут не лучше и не хуже чем любые другие с гитхаба. Читайте выше про рекомендации :)
 
Последнее редактирование:
Назад
Сверху