MySQLと共有ホスティングに必要なリソースの理想的なパフォーマンス設定を設定しようとしています。
私の質問は、max_connections
は本当にどういう意味ですか?
サーバーに対して行われた一意の同時リクエストの数ですか?したがって、2人のユーザーがいて、1人が1つのタブを開いており、もう1人が4つのタブを開いている場合、両方がすべてのタブを同時に押してリロードすると、MySQL DBに5つの接続が確立されますか?したがって、このシナリオを次のようにすると、2つのタブを持つ10人と1つのタブを持つ31人がすべて同時に更新を押します... max_connections
が50の場合、全員がロックアウトされますか?
私が尋ねる理由は、サイトがCPUスロットリングモードに入るのを常に見ているので、メモリリソースを節約するために低いmax_connections
を撮影したいからです。
ご協力ありがとうございました
はい、ページごとに個別の接続が開かれています。ただし、データベースを集中的に使用することを何もしていないと仮定すると、接続は短命であり、ページがクライアントに提供されると自動的に閉じます。
接続の最大数を超えた場合、それ以降の接続試行は失敗します。
許可される接続の数は、max_connectionsシステム変数によって制御されます。 MySQLをApacheWebサーバーで使用する場合のパフォーマンスを向上させるために、デフォルト値は151です。 (以前は、デフォルトは100でした。)より多くの接続をサポートする必要がある場合は、この変数に大きな値を設定する必要があります。
mysqldは、実際にはmax_connections +1クライアントの接続を許可します。追加の接続は、SUPER特権を持つアカウントで使用するために予約されています。 SUPER特権を通常のユーザー(必要のないユーザー)ではなく管理者に付与することにより、管理者はサーバーに接続し、SHOW PROCESSLISTを使用して、最大数の非特権クライアントが接続されている場合でも問題を診断できます。 12.7.5.30項「SHOWPROCESSLIST構文」を参照してください。
MySQLがサポートできる接続の最大数は、特定のプラットフォーム上のスレッドライブラリの品質、使用可能なRAM、使用されるRAM)の量によって異なります。接続ごと、各接続からのワークロード、および必要な応答時間。LinuxまたはSolarisは、500〜1000の同時接続を定期的にサポートし、ギガバイト数が多い場合は10,000の接続をサポートできる必要がありますRAM利用可能であり、それぞれのワークロードが低いか、応答時間の目標が厳しくない。そのプラットフォームで使用されるPosix互換性レイヤーのため、Windowsは(オープンテーブル×2 +オープン接続)<2048に制限されます。
Open-files-limitを増やす必要があるかもしれません。 MySQLで使用できるハンドルの数に関するオペレーティングシステムの制限を引き上げる方法については、セクション2.5「LinuxへのMySQLのインストール」も参照してください。
max_connections
は、minimum値1とmaximum値100000を持つことができるグローバル変数です。ただし、常にmax_connectionsをめちゃくちゃ高い値に設定しても、パフォーマンスにはあまり良くないことが一般的に知られています。何世代にもわたるシステム管理者は、このルールに従っています。
パフォーマンスに関してはmax_connections
値は常にサーバーの仕様に制限されており、使用されていない場合、パフォーマンスの問題は発生しません。