2

2つのクアッドコアプロセッサ(2.4 GHz、16 GB RAM)を搭載したサーバーがあります。非常に重い負荷で実行されるPHPスクリプトがいくつかあります。これらのスクリプトのほとんどは、いくつかのことを行います。

  1. データベースからデータをフェッチします(小さなテーブルから1行だけ)
  2. 他のサーバー(主にFacebook)からデータを取得する
  3. 小さな写真をアップロードする
  4. データベーステーブルを更新します(このテーブルは非常に頻繁に使用され、行数は非常に急速に増加し、1秒あたりほぼ2行になります)

問題は、スクリプトの実行に時間がかかりすぎることです。以前は構成が低いサーバー(1つのクアッドコアプロセッサ、6GBのRAM)がありましたが、スクリプトが完了するまでに4〜5秒かかりました。しかし、現在、実行時間は30〜40秒、さらにそれ以上です。

実行時間を測定するにはどうすればよいですか?microtime()スクリプトの開始時と終了時に測定し、それらを減算します。大まかな見積もりが必要でした。

サーバー構成:apache構成で設定されるいくつかのパラメーターは次のとおりです。

server_limit = 350
max_chlid = 350
keep_alive = off

その他の特徴:1。サーバーに大きな負荷がかかっていない場合、実行時間は非常に短い2.以前のサーバーは、大きな負荷がかかっていても実行にかかる時間が非常に短い

他に何を含めるべきかわかりません。私に聞いてください、そして私はそれらをここに投稿します。

これを改善するにはどうすればよいですか?

アップデート:

問題はImageMagickライブラリにあることがわかりました。私はグーグルで検索し、OpenMPを無効にするなどの解決策をいくつか試しました。しかし、それはあまり役に立ちませんでした

4

3 に答える 3

3

xdebug でプロファイリングを行い、kcachegrindなどのソフトウェアで分析することをお勧めします。そうすれば、何が時間がかかっているかがわかります。

于 2012-08-20T06:14:56.620 に答える
1

これには多くの理由が考えられます。

  1. あなたのクエリは「遅い」ですか?
  2. サーバー構成は正しいですか?
  3. 帯域幅が遅いですか?
  4. MySql-Server の設定は正しいですか?
  5. 挿入する表の形式は何ですか?
  6. 他の何か (cronjob など) がデータベースを殺していますか?

これをコメントとして投稿しますが、残念ながら、これらの質問を解決して、あなたが見つけたことを伝えることはできません;)

于 2012-08-20T06:14:20.727 に答える
0

私は問題を切り離し始めます。各アクション (db からのフェッチ、fb からのフェッチ、アップロードなど) を個別にテストします。

同時に、新しいサーバー環境のすべてのコンポーネント (パッケージ、バージョン、構成など) が以前と同じであるかどうかを確認します。

于 2012-08-21T05:39:18.130 に答える