質問: ファイルのアップロードを行うとタイムアウトになる phpよりファイルをアップロードするとタイムアウトになる現象が発生して困っています。 利用しているのはcoreserverで、以前までは起こらなかったのですがここのところ頻繁に症状が発生します。アップロード時何も操作が出来なくなり、数分経過後500エラーが帰ってきます。 これはどういった原因が考えられますでしょうか? 時折「sql server has gone away」というのが表示されます。mysqlを利用しています。 ただ、アップロード容量は50mb程度ありますし、アップするデータは数kbであってもエラーになるので容量指定の問題ではなさそうなのです。(phpinfoから確認してみました) お詳しい方で、何か思い当たる原因などありましたらアドバイスをよろしくお願いします。 また、解決する為にはどういった方法で1つ1つ原因を突き止めていけば宜しいでしょうか、このあたりも合わせてアドバイスいただけると助かります。よろしくお願いします。
回答: >解決する為にはどういった方法で1つ1つ原因を突き止めていけば宜しいでしょうか 切り分けとしては4つ (1)アップロードの障害 (2)アップロードデータをrdbへインタフェースする際の問題 (3)rdbへのinsertの問題 (4)rdb自身のパフォーマンスの問題 (1)については、ファイルのアップロード後にmysqlの更新をかけていると思うのですが 単純に「mysqlの更新」をしないテストをすればいいでしょう。 単にアップロードを大小さまざまなシチュエーションでテストすれば アップロード時の問題はつきとめることができます (2)アップロードしたデータをなんらかの変換をかけた上で rdbに投入していると思いますが、その変換効率がわるければ当然 処理時間がかかります。こればっかりはフローをよく練るしかありません。 処理的にはアップロードした状態のデータをweb上において、 それを変換して結果をweb上にアウトプットする時間を計測するフローでしょうか (3)インサート処理がどのくらい負荷がかかっているかはphpmyadminなどの ツールで状況を確認できるでしょう。 サーバーをまるまる1台借りるサービスなら別ですが、共有してつかうサービスなら 過負荷をかけているようだと、運営から上限キャップを掛けられている可能性はあります (4)テーブルにオーバーヘッドが発生していたり、テーブルが肥大化していたり 検索項目であるにも関わらずインデックスが効いてなかったり、 rdb自体の問題で低速化は起こりえます。 rdbの基本にたちかえって、効率的なデータの持ち方を学習しなおす必要があるかもしれません