私たちのMySQLサーバーは最近多くのCPUを使用しており(100%に数回到達し、しばらくそこにとどまります)、CPU負荷がすべて1つのCPUの1つのコアにあることに気付きました。私はそれを私のサーバー上の4つすべてに広げることを望んでいました。
私はMySQLの設定を調整して、より多くのRAMとより少ないCPUを使用するようにしましたが、それでも時々非常に高いCPU使用率に達します。
このトピックに関するすべてがthread_concurrencyを参照しているようです(私が読んだのはsolarisのみの設定です)。 Linuxで何ができますか?
ありがとう。
そうです、thread_concurrencyはSolaris専用であり、MySQL5.6以降では非推奨になっています。 MyISAMでマルチコア/ CPUを使用できるとは思いません。ハードウェアを十分に活用するには、InnoDBを使用します。
This 物事をよりよく理解するのに役立つかもしれません。
この変数の正しい値は、環境とワークロードによって異なります。アプリケーションでどの値が機能するかを判断するには、さまざまな値を試す必要があります。推奨値は、CPU数とディスク数の2倍です。
この変数の範囲は0〜1000です。20以上の値は、MySQL5.0.19より前の無限の同時実行性として解釈されます。 5.0.19以降では、値を0に設定することでスレッドの同時実行性チェックを無効にできます。スレッドの同時実行性チェックを無効にすると、InnoDBは必要な数のスレッドを作成できます。
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency
シンプルさを保つために、MySQLで実行される各クエリは、InnoDBエンジンのマルチコアに関係なく、1 CPUコアのみを使用します。
MySQL内のすべてのマルチコア最適化は、多くの異なるクエリを同時に実行し、CPUとデータを破壊する場合に役立ちますが、完了するのに数分/時間かかる大きなクエリがある場合は、常に1つのCPUコアのみを使用します。 (そして、そのようなクエリが必要な場合は、CPU速度が高く、コア数が少ないサーバーを購入する必要があります。)