6

Windows 2008 仮想マシンを実行するクラウド インフラストラクチャにいくつかの Web サイトを移行しています。これらの Web サイトはすべて、MySQL データベースを使用する ColdFusion で実行されます。現在CoLoで問題なく稼働しています。さらに、それらはオフィスの開発ネットワーク上で問題なく実行されています。

現在使用している構成に可能な限り一致するようにクラウドをセットアップしています。これは、基本的に、1 つのサーバーに CF10 + IIS を配置し、別のマシンに MySQL を配置しています。私たちは 99% 完了しており、ほとんどのことは順調に進んでいます。でも....

2 のように、リンク/ボタンをクリックすると次のようなメッセージが表示される場所がいくつかあります。

データベース クエリの実行中にエラーが発生しました。

通信リンク障害 サーバーから正常に受信された最後のパケットは 0 ミリ秒前です。サーバーに正常に送信された最後のパケットは 0 ミリ秒前です。

スタックトレースをスキャンすると、次のこともわかります。 Caused by: java.net.SocketException: Connection reset

通信リンク エラーは常に 0ms です。

最も不可解なのは、これを引き起こしていると思われるクエリが、サイト全体で問題なく使用される単純なクエリであることです。なぜ彼らがこれらの2つの特定の場所で失敗しているのか、私たちは頭を悩ませています。

唯一の手がかりは、呼び出されたスクリプトの CF エラーの説明を見ると、クエリが失敗しているスクリプトが 2 回呼び出されていることがわかります。たとえば、発生の 1 つはアプリケーション ファイルにあります。

>The error occurred in D:/Our_Web_Sites/oursite/Application.cfm: line 73
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 73
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1

CF コードには、スクリプトが 2 回呼び出される原因となるものは何も見つからないため、クエリで最初の呼び出しが失敗したため、CF は再試行しますが、失敗してエラーになるだけです。

この問題をグーグルで検索すると、MySQL タイムアウトの変更に関する多くの投稿が見つかりました。私たちが扱っているのはタイムアウトの問題ではないように見えるので、それらのどれも機能しませんでした。これらのページは毎回失敗します。

私たちが解決に最も近づいたのは、次のブログ投稿です !

CFAdmin の [クライアント要求間で接続を維持する] 設定のチェックを外すと、エラーはなくなります。ブログでは、私たちの好みであるチェックを入れたままにし、「SELECT 1;」の接続検証を使用することを提案しています。それを試してみてください...同じエラー。

JDBC AutoConnect=true オプションも試しました。無効。

最新の JDBC コネクタをダウンロードし、標準の CF10-MySQL コネクタの代わりに使用しました。無効。

繰り返しますが、サイトの 99% は、これら 2 つのリンクを除いて機能します。どちらも、他のすべての環境で問題なく機能します。他のアイデアはありますか?

4

2 に答える 2

0

問題が見つかりました。Savvis のクラウド インフラストラクチャ上でネットワークを運用しています。Savvis から使用していた Windows サーバー インスタンスには、Trend Micro Deep Security Agent がインストールされていました。これは侵入防御システムであり、それが問題でした。サービスを無効にすると、すべての通信エラーが解消されました。以前に受け入れたばかりのクエリを拒否した理由がわかりません。(ついに)これを私の後ろに置くことができてうれしいです!

于 2012-12-05T19:46:50.553 に答える
0

CF や MySQL をアップグレードするたびに、同様の問題が発生したように感じます。通常、JDBC ドライバーまたは接続文字列の変更が役立ちますが、既に試しているようです。

ヒントがないか MySQL エラー ログを確認しましたか? 私たちのものは /var/lib/mysql (「datadir」変数が設定されているものは何でも) にあり、.err 拡張子で終わります。

また、お使いのバージョンの他の JDBC 接続文字列オプションをいくつか試してみませんか? 有効にできる拡張ログがいくつかあります。 http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

于 2012-10-17T13:46:22.050 に答える