0

私のクライアントは共有サーバーに Web ホスティング アカウントを持っていますが、「重大なサーバーの過負荷を引き起こしている」ため、アカウントが停止されました。私はコードを見てきましたが、多くのデータベース クエリを使用する機能的にプログラムされた php です。ざっと見たところ、ほとんどが「SELECT *」です。このデータベースには、10 行以上で 1000 を超えるレコードを持つテーブルがあります。

原因はすべての SQL クエリが解放されていないことではないかと考えていましたが、「スクリプトの実行」がいつ終了するかはわかりません。関数の実行が終了した後ですか、それともページ全体がレンダリングされた後ですか? テーブル (構造またはレコード) のサイズでしょうか? 他のアイデアはありますか?

4

2 に答える 2

2

それは、クライアントが使用していたパッケージの種類、カスタム コーディングされたスクリプトの種類、または wordpress のような標準スクリプトに大きく依存します。

重大なサーバーの過負荷の原因- さまざまなことが考えられます。

高いメモリ使用量:スクリプトはシングルトン モデルを使用していないか、大量のデータを配列や変数に割り当てたり、大量のファイルを含めたりしていません。基本的に悪いデザインとコードの匂い。

CPU 使用率が高い:非常に長いスクリプト、間に複雑な計算を伴う長い反復ループ、またはページ ビューごとの無限ループ (ソケット) など。

高いネットワーク トラフィック:他のサイトから大量のトラフィックを要求するクローラーのようなスクリーン スキャッパー、または基本的に外部コンテンツを ALOT で取得するスクリプト、またはトレント トラッカーのようなもの。

ディスクの使用率が高い:サーバーの IO スタックを絶えず攻撃している (ディスクへの書き込みと読み取りが常に行われている)

多くのデータベース クエリを含むスクリプトは、次のような状態になる可能性があります: ディスク使用率が高い (読み取り) + メモリ使用率が高い (結果の反復処理) + CPU 使用率が高い (結果を処理する))

ローカルでスクリプトのパフォーマンスをプロファイリングするツールを使用する必要があります: xDebugまたはPQPで、実際に何が起こっているかを調べます。

クライアントがそのサイトに真剣に取り組んでいる場合は、VPS に投資する必要があります。

于 2012-04-23T17:29:51.453 に答える
0

SQL 接続を適切に閉じていることを確認してください。一度に大量のクエリを実行している場合は、接続を長時間開いたままにしておく方が効率的かもしれません。または、各クエリの後にそれらを閉じていない場合は、これを試してみてください。10 個のテーブルは多くないと言わざるを得ません。これが共有サーバーに過負荷をかけていることに驚かれることでしょう。

于 2012-04-23T16:37:11.477 に答える