AmazonEC2インスタンスのOEL5で実行されているOracle10gXEデータベースがあります。その上で、Oracle Application Express 4.0.1で記述された公開Webサイト(実際には2つのWebサイト)を実行しています。
一年のほとんど、このサイトは主に情報を見ているだけの人々によって使用されています。そのため、正常に動作します。エラーはなく、アクティビティもそれほど多くありません。この時期(3月から4月)頃、スポーツチームの人から申し込みを受け付け始めると、ほとんどの場合、画面(レコードを作成または更新する画面など)を送信するときにエラーが頻繁に発生します。
エラーの原因を見つけるのに助けが必要です。
実際のエラーメッセージは、Apacheエラー「アップストリームサーバーからの無効な応答」です。これは、Apexの前でApacheを実行している(ポート80)ためです。これは、/ apex /上の要求をApex(ポート8080)にProxyPassします。 。ポート8080を介してApexに直接アクセスすると、500 Internal Server Error
代わりに。 Apacheログは、Apacheが同様に取得していることを示しています。エラーページが返されるまで、常に3〜5秒かかります。
時々(今のように、私がそれを再現しようとしているとき)、それはまったく起こりません。それ以外の場合(おそらく複数の人がいる場合)、更新が受け入れられるまでに3〜4回かかります。それが起こっているとき、それは非常に頻繁に起こります-つまり、最初の試行で成功するのは10回に1回のリクエストだけかもしれません。
Apex開発/管理アプリケーション自体だけでなく、さまざまなアプリケーションで発生するのを見てきました。この問題はどのページセットにも限定されておらず、ページがレコードの挿入、レコードの更新、プロシージャの呼び出し、または別のページへの移動(最後のページはまれですが)が必要な場合に発生します。
アラートログには何も追加されません。スペースの問題かもしれないと思いましたが、すべてのテーブルスペースに十分な空き容量があるようです。 Apacheを再起動し、データベースを再起動しようとしましたが、変更はありません。 「試してみる」だけで物足りなくなったので、できれば問題の原因を一挙に突き止めたいと思います。
これが答えかどうかはまだわかりませんが、Amazon US-Eastでの最近の停止中に、データベースに接続しようとしたときにORA-00018 maximum number of sessions exceeded
が発生していることに気付きました。
それ以来、プロセスの数を増やしました(したがって、セッションの数を増やしました)。停止してから、エラーが再発していないことに気づきました。
注:次にアクティビティが急増したときは、このパラメーターを減らして、問題が再発するかどうかを確認します。これが解決策であるかどうかを確認します。
Oracle XEについて覚えておくべき重要なことの1つは、RAM使用量、ユーザーデータスペース使用量、およびCPU使用率に厳格な制限を適用することです。したがって、複数の要求を処理しようとするアプリケーションはすべて、これらの待機を処理するように特別にコーディングされていない限り、タイムアウトします。これは、アラートログにメッセージが表示されずに「ハング」する理由を説明している可能性があります。問題はありません。システムは以前のタスクを引き続き処理しています。