5

うまくいけば、誰かがここで私を助けてくれます。

Tridon CMS を使用して、jBoss と Apache でホストされている Web サイトを管理しています。

SDL Tridion 5.3 を 5 年間使用していますが、突然、背後にある Oracle データベースでエラーが発生しました。ほとんどのコンテンツは、ファイル システムから通常の jsp ページとして提供されますが、Oracle データベースから HTML スニペットを返す Tridion の Java API への呼び出しを介して提供されるコンポーネントがいくつかあります。
最近、これらの HTML スニペットの一部が提供されていないことに気付きました。サーバー ログ ファイルを調べたところ、Oracle エラーORA-01000: 最大オープン カーソルの超過が生成されていることがわかりました。
最大カーソル数は 300 に設定されていたので、それが役立つかどうかを確認するために 350 に増やしましたが、そうではありませんでした。
アクティブな Oracle セッションを監視すると、多数のセッションがカーソルの最大数に達したことがわかり、アプリ サーバーを再起動しました。これは役立つように見えましたが、一時的なものにすぎません。最大カーソル数のしきい値に達したセッションの数は、再び徐々に増加しています。再起動直後の昨日の午後には最大カーソルで約 30 のセッションがありましたが、今朝は 150 です。

明らかに、これを引き起こすために最近何かが変更されましたが、何が原因かはわかりません。Oracle データベースは、私たちが通常アクセスできるものではなく、直接変更するものでもありません。日々のデータベース操作はすべて Tridion API を介して行われます。Tridion の開発と公開に関する限り、私たちは何も特別なことをしていないので、過去数年間行ってきたことと何ら変わりはありません。現在、当社の Web サイトへのトラフィック量は比較的少なく (過去には大幅に増加していました)、問題はないと確信しています。

接続されているかどうかはわかりませんが、問題が発生する直前に内部ファイアウォールの 1 つに障害が発生しましたが、これが原因で問題が発生する可能性があるとは考えられません。ファイアウォールのフェールオーバー以外に、アプリ サーバーとデータベース間の接続に変更はありません。

ここで解決策を探す場所について何か提案はありますか? SDL とのサポート チケットをオープンしたばかりですが、現時点では、彼らも私たちと同じように困惑しています。

ありがとう。

4

2 に答える 2

7

過去に IBM WebSphere で同様の問題が発生しました。このシナリオでは、問題の根本的な原因は、ファイアウォールでのタイムアウトが AppServer 接続のクリーンアップ タイムアウトよりも短いため、アイドル状態または古い接続でファイアウォールがタイムアウトし、アプリケーション サーバーと DB 間の接続が切断されることです。

最初にこれをチェックして、これが根本的な原因ではないことを確認することは価値があるかもしれません。アプリケーション ログや Tridion API などの分析に多くの時間を費やしているため、これを理解するのに時間がかかりました。 WebSphereのような設定。

私たちが実装した解決策はUnused Timeout、ファイアウォールのタイムアウト設定よりも低く設定することです。これにより、WebSphere Application Server は、未使用の接続をファイアウォールがドロップする前にそれらをクリーンアップできます。

于 2012-08-17T13:22:03.113 に答える
4

SDL Tridion R5.3 については不明ですが、2011 SP1 では、ResultSet が明示的に閉じられていない場合に JNDI を (WebSphere と組み合わせて) 使用すると、カーソルが開いたままになるという既知の問題があります。

解決策は、Oracle のドキュメントに記載されているように、許可されているカーソルの数を増やすことです。または、あなたが言うように問題が発生し続ける場合は、JNDI を使用しないことを検討してください。可能であれば、ResultSet を適切に閉じるための独自のコードをチェックアウトできます (これは ResultSet の JavaDoc によると:: 必要ではありませんが、これは JNDI を使用していない場合にのみ当てはまるようですが、JNDI を使用している場合はカーソルを残すようです開いた)。

于 2012-08-17T10:09:31.273 に答える