私は160GBのRAMと40個のCPUコアを備えたubuntu 15.04サーバーを持っています。私は1日あたり約200,000人の訪問者と高トラフィックのWordPressのサイトを実行しています。 Webサーバーはnginxで、キャッシュサーバーはワニスです。マイwww.confのPHPの設定は、PHPとMySQLデータベース接続が頻繁に切断され、それが「エラー確立データベース接続」を示し、MySQLの接続設定がwordpress phpとmysql接続が頻繁に切断される
sam-recover = BACKUP
max_connections = 2000
query_cache_limit = 0
query_cache_size = 0
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
innodb_log_file_size=268435456
innodb_log_buffer_size = 4G
innodb_buffer_pool_size = 8G
innodb_fast_shutdown = 0
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit=0
[mysqldump]
quick
quote-names
[mysql]
[isamchk]
key_buffer = 16M
sort_buffer_size = 32M
主な問題はあるある
pm = ondemand
pm.max_children = 300
pm.start_servers = 80
pm.min_spare_servers = 50
pm.max_spare_servers = 300
pm.process_idle_timeout = 10s
pm.max_requests = 1000
です。 MySQLのサービスが正しく実行されています。 php5-fpmサービスを再起動すると、サイトは動作し始めますが、後で同じことが起こります。
私は午後のコンフィグレーションに異なる値を試しましたが、実際には調整は一切行っていません。
ログには何もありません。これら2つのサービス間の接続問題をどのようにデバッグできますか?
もし160GBのメモリを持っているのであれば、なぜinnodb_buffer_pool_sizeに8を割り当てるだけですか?そのことは、専用のデータベース・インスタンスで使用可能なメモリーの約70〜80%にする必要があります。さらに、あなたの接続制限をチェックする必要があります。 'max_connections'は必要以上に多く、おそらくシステムの負荷に応じて4096以上にする必要があります。これは、皆さんのテーブルに対してInnoDBを使うことを前提としています。 MyISAMは拡大縮小が難しく、避けるべきです。 – tadman
私は他のウェブサイトを運営することも考えています。 'innodb_buffer_pool_size'には70-80%のメモリを使用することが必須ですか?私は 'max_connctions'の値を上げようとします。 – uvishere
これは必須ではありませんが、InnoDBのパフォーマンスがより速くなるにつれてメモリを増やすことができます。考慮する必要があるMySQL 5.7を使用していない場合は、まだ最速のバージョンです。 – tadman