私は約1週間前にウェブサイトを立ち上げ、メーリングリストにウェブサイトが公開されていることを知らせるメールを送信しました。その直後、Webサイトがダウンし、一般的なエラーログに「プロセス制限を超えました」というエラーが殺到しました。それ以来、私は本当に多くのコードをクリーンアップし、データベース接続を最小限に抑えるように努めてきました。そのエラーは、エラーログに1日1回程度表示されます。このエラーの原因は何ですか?私はウェブホストに電話をかけようとしました、そして彼らはそれが私のコードと関係があると言いました、しかしコードの何が間違っていたか、またはどのページがエラーを引き起こしたかについて私をどの方向にも向けることができませんでした。誰かが私にこれ以上の情報を教えてもらえますか?たとえば、プロセスとは何ですか?また、いくつのプロセスが必要ですか?
2 に答える
わお。大きな質問です。
明らかに、あなたのapacheチャイルドワーカープロセスを最大限に活用します。作成できる数の大まかなアイデアを得るには、topを使用して1つのhttpプロセスの大まかなメモリフットプリントを取得します。ワードプレスまたは別のcmsを使用している場合は、それぞれ50〜100 mになる可能性があります(apacheにphpモジュールを使用している場合)。次に、マシンがWebサービスにのみ使用されていると仮定して、合計メモリを取得し、OSで使用するチャンクを減算してから、それを100mで除算します(この例では)。それはあなたが持つことができる最大の労働者プロセスです。httpd.confに設定します。これを実行してapacheを再起動したら、topを監視し、メモリの交換を開始しないようにします。そうした場合、労働者の数が多すぎます。
mysqlサーバーのような他のものが実行されている場合は、使用できるワーカーの数を計算する前に、そのためのスペースを確保してください。この数が少ない場合、偉大な人を大まかに引用するには、「より大きなボートが必要になるでしょう」。冗談だ。100mを超えるようなhttpプロセスでは、非常に高いメモリ使用量が見られる場合があります。子あたりの最大リクエスト数を低く調整して、httpプロセスの寿命を短くすることができます。これは、肥大化したhttpワーカーをクリーンアップするのに役立ちます。
注目すべきもう1つの領域は、リクエストの時間応答時間です...各リクエストにはどのくらい時間がかかりますか?簡単に確認するには、Firefox用のFirebugプラグインを使用し、[ネット]タブを見て、最初のリクエストが応答するまでにかかる時間を確認します(画像などではありません)。なんらかの理由でリクエストの応答に1〜2秒以上かかる場合は、ログジャムのようなものになるため、これは大きな問題です。これの原因は、phpコード、またはmysqlクエリの応答に時間がかかりすぎることが原因である可能性があります。これに対処するには、WordPressを使用して、mysqlへのストレスを軽減するための優れたキャッシュプラグインを使用していることを確認してください。
ただし、正直なところ、ワーカーが少なすぎてメモリを利用していない場合を除いて、サーバー(メモリ、CPUカウントなど)とhttpd.conf設定の詳細がなければ、apacheの最適化は短い投稿で簡単に対処できません。 。
注:サーバーにアクセスできない場合は、メモリ使用量を把握するのに苦労します。
プロセス制限は通常、共有ウェブホストプロバイダーによって強制されるものであり、通常、アカウントで実行されているプロセスの数と関係があります。これは通常、サーバーに対して一度に行われる接続の数に相当します(接続ごとに1つのPHPプロセスを想定)。
関係する多くの要因があります。あなたはその制限があなたのホスティングプロバイダーから何であるかを理解し、そしてあなたの負荷を処理することができる新しいものを見つけるべきです。