2

エラー
写真用の大量アップローダー (Plupload) を備えた Web アプリを使用しており、20 枚の写真をアップロードすると、約 6 枚 (約 30%) が内部サーバー エラーで失敗します。このドメインの Apache error.log を確認しましたが、新しいものはありません (古いエラーがここに表示されていたので、正しい error.log を見ていることがわかります)。

これは、Dreamhost (ホスティング プロバイダー) サーバー上の VPS でのみ発生しますが、開発サーバーでは滑らかに動作します。

ああ、物事1 か月前は問題なく機能していましたが、失敗し始めました。当時私は Uploadify を使用していましたが、それは Flash を使用していたため、アップロードが失敗した場所をデバッグすることはできませんでした。

ファイルとスクリプト
アップロードされたファイルは写真で、すべて約 100 kB の大きさです。3 MB の写真を正常にアップロードできましたが (今でもアップロードできます)。私の .htaccess は当然、アップロード中に変更されません。サーバー側には、GD2 ライブラリを使用して写真の移動とサイズ変更を行う PHP スクリプトがあります。

サーバーの状態
最近、VPS の RAM を 300 MB から 400 MB にアップグレードしました。これは以前は機能していたので、理由としてメモリが除外されるようにアップグレードしました。また、PHP のメモリ制限は 200 MB なので、これで十分です。

私は、 Dreamhost が「あなたのコードが引き起こしたエラーについて責任を負うことはできません」、「残念ながら問題のデバッグを支援することはできません」と述べて、助けたくないことに非常に不満を感じています。
アプリが機能せず、クライアントがイライラしている間、まばらな「サポート」が 1 週間続きました。

質問

  1. この種の「自分で」サポートは業界全体の標準ですか?つまり、ホストはこれを別の方法で処理しますか?
  2. これをどのように正確にデバッグできますか?
4

4 に答える 4

3

標準の Apache + PHP セットアップがあると仮定します。考えられる構成の 1 つは、事前にフォークされたセットアップです。この場合、Apache は自分自身の子をフォークすることでシステム負荷に適応します。

RAM が 400 MB しかない場合はかなり厳しいので、それぞれが 200 MB を使用する 20 個のプロセスを実行している場合 (すべてのプロセスが GD を使用してかなり大きなファイルを処理すると仮定すると)、メモリ マネージャーで問題が発生します。

これがどうなるかを確認するために、最初にインスタンスの総数を 2 に減らします。を実行してメモリ使用量にも注意してtopください。

とにかく、Gearman などの別のタスク マネージャーを実行してサイズ変更タスクを実行すると、アップロードがアップロードされたファイルの移動とサイズ変更タスクの実行のみに集中する必要があるため、有益な場合があります。このようにして、PHP インスタンスの実行に必要なメモリを大幅に削減できます。

于 2012-06-15T11:28:04.883 に答える
0

質問 2 に答えようとしている: すべてのコードをチェックしてバグが見つからなかった場合は、サーバー上で実行されているすべてのプログラム (apache、php、 ...) たとえば、Apache と php で実行されている Web サービスに問題があったことを覚えています。php のバージョンは 5.2.8 で、多くの調査の結果、そのバージョンの解析に問題があることがわかりました。 xml データ。

于 2012-06-15T02:52:23.347 に答える
0

質問の最初の部分について: Dreamhost は「コールバック」付きの有料サポート サービスを提供しています。これを一度使用して、何かを調べました。彼らは一般的なサポートが非常に優れています (多くのホスト IMO よりも優れています) が、専用のサービスは期待できません。しかし、コールバックの料金を支払うと、電話で約 2 分で、必要な応答を得ることができ、さらに、その時間に対して 10 ドル (定期) が支払われます。あなたは両方とも勝ちます。定期的な請求をキャンセルすることを忘れないでください。

質問の 2 番目の部分については、まったく同じ問題がありました。彼らの反応(コメントでLinusが示唆したように)は、「ユーザー」が使用するすべてのプロセスのCPU使用率を集計しているというものでした。その合計がしきい値を超えると、単純にプロセスを強制終了してサイクルを下げます。エラーメッセージも警告も何もありません。プロセスには、MySQL、CGI (perl)、または PHP を含めることができます。監視したり予測したりする方法はなく、それをプログラムすることもできませんでした。解決策...残念ながらDreamHostではありません。(webhostingtalk.com はホストのアイデアをたくさん提供してくれます)。したがって、一部のサイトでは使用しますが、他のサイトでは使用しません。

于 2012-06-16T11:50:49.827 に答える