Лучшая конфигурация Apache и MySQL для 16 ГБ и 8 ядер [закрыто]

У меня проблемы с моими серверами. У меня пик, и мои серверы загружены очень высоки.

У меня есть 3 сервера, один для внешнего интерфейса, один для базы данных (mysql) и один для доставки изображений (с этим проблем нет)

Вот мои текущие конфигурации и средняя загрузка для 1500 посетителей:

Сервер 1 (интерфейс):

load average: 143.08, 120.50, 66.99
CentOS 6.3
Apache/2.2.15
8 x Intel(R) Xeon(R) CPU E5645  @ 2.40GHz
16GB RAM

httpd.conf

PidFile run/httpd.pid
Timeout 60
KeepAlive Off
MaxKeepAliveRequests 1000
KeepAliveTimeout 15

<IfModule prefork.c>
  ServerLimit       520

  StartServers           16
  MinSpareServers         5
  MaxSpareServers        20
  MaxClients            500
  MaxRequestsPerChild  1000
</IfModule>

<IfModule worker.c>
  ServerLimit           520

  StartServers           16 
  MaxClients            500
  MinSpareThreads        25
  MaxSpareThreads        75 
  ThreadsPerChild        25
  MaxRequestsPerChild     0
</IfModule>

ExtendedStatus On
UseCanonicalName Off
HostnameLookups Off

ErrorLog logs/error_log
LogLevel warn

ServerSignature On


IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

Сервер 2 (MySQL my.cnf)

load average: 12.84, 23.39, 22.85
CentOS 6.4
MYSQL 5.5.34
8 x Intel(R) Xeon(R) CPU E5645  @ 2.40GHz
16GB RAM

my.cnf

[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

max_connections = 2000

key_buffer = 384M
query_cache_type=1
query_cache_size=512M
query_cache_limit=4M

innodb_buffer_pool_size = 8G
slow_query_log=1
slow_query_log_file=log-slow-queries.log
thread_cache_size=8
table_cache=128k
tmp_table_size=256M
max_heap_table_size=256M

init_connect='SET collation_connection = latin1_swedish_ci'
init_connect='SET NAMES latin1'
character-set-server=latin1
collation-server=latin1_swedish_ci
skip-character-set-client-handshake

log-error=/var/log/mysqld.error.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

вывод mysqltuner

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.34-log
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster 
[--] Data in InnoDB tables: 3G (Tables: 57)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 57

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 5h 11m 15s (4M q [241.514 qps], 537K conn, TX: 11B, RX: 2B)
[--] Reads / Writes: 87% / 13%
[--] Total buffers: 9.1G global + 2.8M per thread (2000 max threads)
[OK] Maximum possible memory usage: 14.5G (46% of installed RAM)
[OK] Slow queries: 1% (55K/4M)
[OK] Highest usage of available connections: 37% (756/2000)
[OK] Key buffer size / total MyISAM indexes: 384.0M/96.0K
[OK] Key buffer hit rate: 100.0% (46K cached / 0 reads)
[!!] Query cache efficiency: 0.0% (0 cached / 2M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 480K sorts)
[OK] Temporary tables created on disk: 16% (112K on disk / 684K total)
[OK] Thread cache hit rate: 83% (87K created / 537K connections)
[OK] Table cache hit rate: 99% (2K open / 2K opened)
[OK] Open file limit used: 0% (19/264K)
[OK] Table locks acquired immediately: 100% (7M immediate / 7M locks)
[OK] InnoDB data size / buffer pool: 3.6G/8.0G

Сведения о приложении

php 5.4 {{1} } Symfony 1.2 Размер базы данных: 6 ГБ

Вы можете мне помочь?

-1
задан 20 December 2013 в 11:40
1 ответ

Основная проблема, которую я вижу здесь, - это высокая средняя нагрузка на интерфейсный сервер. Сервер MySQL мог бы работать лучше, но это не так уж плохо. Серверы Apache довольно часто становятся узким местом. Не зная, что делает ваше приложение, решить проблему довольно сложно. Общие рекомендации могут быть следующими:

  1. Установите Munin на внешнем сервере, который будет включать метрики для Apache. Имея эту информацию, вам будет намного проще настроить Apache. Munin также поможет вам определить, как часто и когда увеличивается средняя нагрузка.
  2. Проанализируйте Apache и журналы вашего приложения. Какие самые тяжелые и частые запросы? Возможно, есть проблема, связанная с приложением (например, обслуживание статических файлов с помощью PHP).
  3. Рассмотрите возможность перехода на nginx / php-fpm вместо Apache. Apache - очень хороший веб-сервер, но nginx стал своего рода стандартом для многих современных установок, которые не нуждаются в некоторых специфических функциях Apache.

Учитывая оптимизацию MySQL. У вас есть только 96,0 КБ индексов MyISAM, но 384,0 МБ пула буферов ключей. Вы можете спокойно уменьшить этот параметр. Вы также можете проверить свои медленные запросы с помощью pt-query-digest Percona, это очень удобно.

1
ответ дан 5 December 2019 в 19:58

Теги

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