モバイルアプリからのAPIリクエストを処理するApache2Ubuntuサーバーを実行しています。
最近、リクエストが高くなる(同時ユーザーが増える)と、リクエストの応答が遅くなるというボトルネックに直面しています。以前は〜1または2秒で十分ですが、同時ユーザーが増加すると(特定のピーク時間に)、最大1秒以上遅延する可能性があります。サーバーの負荷、[〜#〜] cpu [〜#〜]およびメモリは非常に低いままです。
私の目標は、Apache2とUbuntu Serverの機能を増やして、最小の応答時間でできるだけ多くの同時ユーザーを提供することです。 メモリとCPUは主要な考慮事項ではありません VPS仕様は、制限に達した場合にスケールアップできるためです。どうやってやるの?
私がこれまでにしたこと:
Ulimit / etc/security/limits.confを構成し、以下を追加します。
次の行を/ etc/pam.d/common-sessionに追加します
セッションが必要ですpam_limits.so
Apache2を構成します/ etc/Apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module> StartServers 20 MinSpareServers 25 MaxSpareServers 100 MaxRequestWorkers 150 MaxConnectionsPerChild 0 MaxClients 8192 MaxRequestsPerChild 0 ServerLimit 8192 </ IfModule>
次の行を/ etc/sysctl.confに追加します
fs.file-max = 2097152
応答時間は改善されているようですが(一部のリクエストはまだ遅れていますが)、ピーク時以外よりもはるかに遅いため、満足のいくものではありません。
Preforkモジュールの使用を停止し、Apacheでイベントmpmの使用を開始します。 Preforkは古い方法であり、今後はイベントmpmをインストールします。
これはWebサーバーではなく、チェーン内の他のサーバーである可能性があります。
Netstat -i 5
ネットワークインターフェイスにエラーがあるかどうかを確認します。KeepAlive
がオンになっていることを確認してください。特に、ajaxの重いサイトのようなものであれば、パフォーマンスが向上します。MPMを切り替えることがあなたを助けるとは思わない。あなたの状況はリソースの制約ではありません。その何か他のもの。