
私のサーバーには 7 つのデータベースがあります。サーバーには 512 MB の RAM があり、今晩 2 GB にアップグレードされる予定です。また、2.4 シングル プロセッサが搭載されています。
接続制限を超えたというエラーが発生しました。RAM を増やすと、接続数を増やしても大丈夫ですか? 現在は 200 に設定されていますが、JOIN などを考慮すると、1 つのページが 3 ~ 4 個のデータベースに接続する場合があります。
私たちは、単なる組織化のために非常に多くのデータベースを設定しました。すべてのデータベースには、合計で約 250 ~ 300 個のテーブルがあります。
アドバイスをいただければ幸いです:)
アップデート
結局、思っていたよりもたくさんのつながりがあることがわかりました...
2GB の RAM と 2.4 シングル コアの場合、50 ユーザー接続は正確ですか、それともそれを増やす必要がありますか?
[mysqld]
safe-show-database
skip-locking
safe-show-database
interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000
key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M
query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1
tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1
答え1
接続数を大幅に増やすことができるはずです。ただし、スレッドごとのメモリ使用量を適切に調整しないと、MySQL がメモリ不足になるリスクがあります。MySQL がメモリ不足になると悲惨な状況になる可能性があるため、回避するのが最善です。
適切に調整しないとどうなるかの例:
以前に私が提供したチューニングの推奨事項は次のとおりです。
接続に制限がないように、Mysql で my.cnf を設定するにはどうすればよいですか?
リンク先InnoDB メモリ使用量InnoDB メモリ使用量を計算するための数式が含まれており、これをスプレッドシートに挿入して、スレッドごとにメモリ使用量を計算できます。
以下についてさらに詳しい情報がありますMySQL サーバーのメモリ使用量。
最終的には、設定に基づいてスレッドあたりの最大メモリ使用量を計算することが目標になります。計算が完了したら、最大接続数を適切な値に設定できます。
答え2
1GBのマシンでは、問題なくmax_connectionsを750に設定しています。
答え3
PHP を使用する場合は、通常は /etc/php.ini にある PHP 設定ファイルを編集し、永続性を OFF に変更します。
[MySQL] ; 永続的なリンクを許可または禁止します。mysql.allow_persistent = Off
以上です。Apache を再起動してください。