次の状況が発生しています。
私たちは8コア、8 GBのRAM、2.6 GHzのlinodeを使用しています-nginx + php-fpmを使用しています-CPU使用率の非常に高いグラフを取得しています(これは、このような悪いVPSネイバーになりたくない)...
一度に約100人未満のユーザーがサイトにいるため、この状況も非常に厄介であり、CPU使用率が非常に高くなっています。
私たちは、ワードプレスやdrupalなどのよく知られ、よく文書化され、巧妙に細工された他のフレームワークではなく、非常に未知の、おそらくCPUを集中的に使用するphp指向の恐ろしいフレームワークを使用しています。キャッシングを処理する)nginx + php_fpmプラットフォーム上のphp。
したがって、実行中のphp-fpmプロセスは約6つあり、個別に大量(30以上、多くの場合99%に近い)のCPUを消費します。CPUの使用量を抑える方法については、私にはまったくわかりません。 。これらのスパイクが常に発生しているため、どのphpスクリプトがこれらのスパイクを引き起こしているのかわかりません。通常は1つまたは2つしか実行されていません。ただし、6つすべて実行すると、8つすべてのCPUが最大化されます。
私のpool.d / www.confファイルには次の設定があります。
pm = dynamic pm.max_children = 10 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6
私がそれを解釈している方法で、私たちのメモリは実際に素晴らしいです(使用されている472/7000 + mb、スワッピングなしなど)、さらに多くのプロセスを処理し、取得するために待機している行を分解できるため処理済み-しかし、残念ながら、実行中の各プロセスはCPUで非常に負荷が高いため、最終的にCPUが屋根を通り抜けてしまうため、十分なプロセスを処理できません。
質問 - プロセスphp-fpm cpuの使用を減らすために一体何ができるので、php-fpmのそのプールconfファイルの設定を増やすことができます -さらに、/ var / log / php5 -fpm.log子供たちを増やし、最小/最大/開始サーバーを調整/増加するように叫んでいます。しかし、そうすると、前述のように負荷平均が狂ってしまいます。必ずしもキャッシュを使用せずにこれを行うにはどうすればよいですか?
私の考えは?私はcpulimitを使用して、割り当てられた量以上のCPUを使用するプロセスがないことを確認しました。または、そうすることで、いくつかのプロセスを実行する能力を高めることができます-2つのプールを実行することも考えました-1つは前向きのWebサイト(顧客が体験するもの)用で、もう1つはバックエンド(時間の前向きのサイトに影響を与える)用ですを消費するレポートが実行されています)。
私はこのトピックについて数日間研究、グーグルなどを費やしてきました-そして、すべての人の状況は彼らのシステムに非常に独特であるので難しいです-問題は、そのような特定の前代未聞の、おそらく不十分に書かれた-フレームワーク-が作っていることです解決策を見つけるのは難しい。まだこのフレームワークをスクラップすることもできません。何らかの解決策を見つけなければなりません。
更新:私はphpセッションを保存するためにmemcacheを実装しました-フレームワークはユーザーセッションに大きく依存しており、システムの性質上、従業員は一度に複数のタブを使用することが多いので、各セッションをチェックして能力/ユーザーデータなどを確認します...したがって、これによってパフォーマンスがある程度向上することを期待しています-必要に応じてコメントを歓迎します-ボリュームのピークタイムが増えたときに明日どうなるかを確認します。