問題タブ [fusionreactor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - Colfusion->mysql通信で不思議なハングスレッドを引き起こす原因
Coldfusionのより興味深い「機能」の1つは、外部リクエストを処理する方法です。その基本的な要点は、クエリが外部ソースに対して、<cfquery>
またはその他の外部要求を介して行われる場合、外部要求を特定のドライバーに渡し、その時点でCF自体がそれを一時停止できないことです。クエリまたはcfsettingでタイムアウトが指定されている場合でも、すべての外部要求でタイムアウトは完全に無視されます。
http://www.coldfusionmuse.com/index.cfm/2009/6/9/killing.threads
そのことを念頭に置いて、私たちが遭遇した問題は、CFサーバーとmySQLサーバー間の通信がうまくいかず、ハングしたスレッドが残ることがあるということです。以下の特徴があります。
- ハングしたスレッドはCFに表示され、FusionReactorから強制終了することはできません。
- mySQLにハングしたスレッドは表示されず、アクティブな実行中のクエリもありません(通常のスリープのみ)。
- データベースは他の呼び出しに応答しており、正しく動作しているように見えます。
- DBまたはユーザーの最大接続数に達していません。
私には、CFが何らかの形でリクエストを行っており、mySQLがそのリクエストに応答しているが、CFが無視し、mySQLからの応答を待ってスレッドを開いたままにしておくという回答しか考えられないようです。これは、データベースに問題の兆候が見られない理由を説明しますが、CFはスレッドを開いたままにして謎の答えを待ちます。
通常、これらのハングしたスレッドは、他の方法で機能しているスクリプト(ニュース記事へのコメントの投稿など)にランダムに表示されます。そのスクリプトに対して1つのスレッドがハングしている場合でも、そのスクリプトに対する他の要求は実行されます。これは、スクリプトに必ずしも障害があるのではなく、スクリプトの実行時に直面した状態を意味します。
mysqlによって生成されたmax_connectionsエラーではないことを確認するためにいくつかのテストを実行しました...ユーザーを作成し、それに1つの最大接続を与え、その接続をsleep(1000)クエリと結び付け、別のクエリを実行しました。残念ながら、ハングしたスレッドを生成せずに正しくエラーになりました。
だから、私はこの時点で何が悪いのか全く手がかりがないままになっています。サーバー間の通信がうまくいかない原因となる可能性のある他の接続制限またはタイムアウトはありますか?
memory-management - ColdFusion でアプリケーション スコープ変数のサイズ (メモリ フットプリント) を特定することはできますか?
サーバー レベルで全体的なメモリ使用量を表示する FusionReactor を使用しますが、アプリケーション スコープに格納されている個々のアイテムがどれだけのメモリを占有しているかを確認できると便利です。
tomcat - 404 HandlerがColdFusion10にぶら下がっていると、ColdFusion8で完璧に機能します
ColdFusion10サーバーの404ハンドラーページで奇妙な断続的な問題が発生しています。これが裏話です:
何年もの間、2台の負荷分散されたColdFusion8サーバーを問題なく実行してきました。
ColdFusion 10のアップグレードをソフトローンチするために、これら2つのサーバーの1つをColdFusion10にアップグレードしました。
CF10サーバーにUpdate8をインストールし、コネクタを削除して再度追加しました。
両方のサーバーでWindows2008R2が実行されています。
404ページで接続リセットの問題が発生する問題について述べているフォーラムの投稿をいくつか読んだことがありますが、その特定の問題は見られません。私が見ているのは、FusionReactorで404.cfmファイルのスレッドがハングしていることです。これらのハングしたスレッドの1つから取得したスタックトレースの例を次に示します。
FusionReactorを使用してこれらのスレッドを手動で強制終了しようとしましたが、停止しません。ハングしたスレッドをクリアする唯一の方法は、ColdFusionサービスを再起動することです(ColdFusion 10にアップグレードしてから、少なくとも1日に1回は実行する必要がありました。
404は、標準レイアウトのカスタムタグを実行し、ページが見つからないという通知を表示する以外に、特別なことは何もしません。
スレッドダンプを見ると、ColdFusionは処理を完了し、バッファに出力を入力し終えたように見えますが、ブラウザへの送信は完了していませんか?
クロージングとフィニッシュについてはたくさんのことがありますが、それに続くステップにはより多くの読み取りと応答があります。したがって、ここで何が起こっているのかはわかりませんが、ColdFusion10の移行の完了が確実に停滞しています。これらのハングしたスレッドの原因を正確に発見する必要があります。
coldfusion - fusionreactor インストール エラー バッキング ストアが利用できません
ColdFusion 10 / Windows 7 (32 ビット) システムにFusionReactor_windows_4_5_5をインストールしようとしています。しかし、それは私にエラーを与えています:
どうすれば問題を解決し、FusionReactor を正常にインストールできますか?
java - メソッド引数なしで cfc を直接呼び出すと、ColdFusion のメモリ リークが発生する
私たちは長い間メモリの問題を抱えていました。問題を再現する方法を最終的に追跡しましたが、何が原因で、どのように修正するのかわかりません。
Web アクセス可能な /controller ディレクトリに、送信と処理を処理する多数の cfc があります。メソッド引数なしで cfc が直接呼び出されると、サーバーはメモリを消費し始めます。
たとえば、http://www.domain.com/controller/LoginController.cfcのような URLは、タイムアウトになるまでブラウザで実行されます。/CFIDE はロックダウンされており、公開されていません
そのため、cfexplorer は使用できません (または使用できないはずです)。
FusionReactor を使用してインスタンスを監視します。当社のサーバーは 20GB のヒープ スペースに設定されています。アプリケーションをロードした後に新たに再起動すると、メモリは約 800MB 巡航します。
通常のトラフィックでは、メモリは通常のガベージ コレクションで 5 GB から 10 GB の間で変動します。しばらくすると、サーバーは最終的に 98% の容量に達します。そこに走る傾向がある
トラフィックの急増によってメモリ不足エラーが発生するまで、数時間または数日かかることもあります。ガベージ コレクションはメモリを回復せず、アクティブなメモリもありません
FusionReactor によって報告された実行時間の長いスレッド。サーバーを再起動するだけで回復します。
FusionReactor (インストールしたばかりで、最終的にこの問題についての洞察を得た方法です) を使用して、PermGen メモリ空間を調べていたところ、それが原因であることがわかりました
ヒープの 85%。これはまったく正しくないようでした。メモリ ダンプを実行し、Eclipse を介して MAP にロードして分析しました。メモリ内に 10 個のオブジェクトがあることがわかりました
1.7GB (1.7x10 は総ヒープの約 85%) を測定します。これらのオブジェクトは次のようになります。
そこで、サーバーの 1 つで CF を再起動しました。FusionReactor をチェックしたところ、メモリ使用量は見られませんでした。次に、ブラウザに移動し、最初に次のように cfc を呼び出しました。
http://www.domain.com/controller/LoginController.cfc?method=foo
これにより、onMissingMethod ハンドラーが適切にキックし、適切なエラー ページにリダイレクトし、サーバーへの影響はありませんでした。
しかし、これを呼び出す:
http://www.domain.com/controller/LoginController.cfc
ページがハングします。FusionReactor は、実行中のリクエストがあるにもかかわらず、アクティブなリクエストがないことを報告しています。これが、発生中に問題を特定できなかった理由です。さらに悪いことに、メモリを更新すると、アクティビティが報告されていない状態で、メモリが 10 分の 1 パーセントずつゆっくりと増加することがわかります。サーバーのタイムアウトは 5 分に設定されています。最終的には1.7GBで殺され、孤児になると思います。これによりサーバーがダウンすることはありませんでした。現在実行中のメモリがスパイクされただけで、ガベージ コレクションでは何も回復されません。これは、時間が経つにつれて、これらの URL へのランダムな呼び出しがゆっくりと噛み砕いてメモリを保持する理由を説明しているようです.
次に、複数のブラウザー タブから URL を呼び出しました。これにより、メモリがほぼ瞬時に 98% に急増しました。FusionReactor は、実行中のブラウザー タブが 15 を超えていたにもかかわらず、2 つの長時間実行された要求が 10 秒で上昇していることを示しました。スレッドを強制終了しても何も起こらないようです。サーバーを再起動するだけで問題が解決しました。
これで、問題 (PermGen ヒープで巨大な孤立したオブジェクトを作成するファントム スレッド) と、問題を再現する方法を具体的に特定できました。
どのように、またはなぜリクエストが cfc に直接行われるのか、私にはわかりません。おそらくボットまたは時折の奇妙なブラウザの動作.
すべての巨大なオブジェクトは、jrun.servlet.jrpp.ProxyEndpoint のインスタンスです。
この問題の具体的な原因とその修正方法を教えてください。
これは、Java 1.7.0_25 を実行する Win2003 サーバーの CF9.01 標準です。
ありがとう!
coldfusion - WireBox: Java クラスをマップし、メソッドを即時に呼び出す
createObject("java", "com.intergral.fusionreactor.api.FRAPI").getInstance()
結果をWireBox エイリアスにマップする簡単な方法はあり ますか?
通常のクラスをマッピングするのは簡単ですが、この場合、ボイラープレート プロバイダーを仲介者として使用するのではなく、返されたインスタンスのシングルトンを 1 つのステップでマッピングするだけで、きれいに保ちたいと思います。
toJava()
私は明らかに通常の基本について知っていますが、疑問に思っているのは、クラスtoDSL("javaloader:...")
のメソッドに直行することについてのポイントです。getInstance()
これを行うもっと簡単な方法があると確信していますが、今のところ、すべての木の森を見ることができません。
環境の詳細: ColdBox Platform Bundle 3.8.1、Railo 4.2
返信ありがとうございます。
apache - Amazon ec2 の CPU ピーク
CFML で記述された Web サイトを、Apache と Railo を使用して Amazon ec2 インスタンスでホストしています...パフォーマンスを改善し、リクエスト呼び出しを削減しようとしています。
以前は、ディスク上で過剰な読み取り操作を生成するクエリの CFML クエリ (qoq) でいくつかの問題がありました... しかし、qoq の使用を削除して解決しました。
Apache と FusionReactor のログを読むと、リクエスト呼び出しに関連して、CPU のピークがすぐに高くなります...このピークは、夜間など、Web サイトの使用されていない瞬間にも 1 時間ごとに繰り返されます。
Apache ログにその要求が表示されますが、生成される理由がわかりません。
スー...これは、1時間ごとに何かを行うサーバー構成だと思います。これは、別のホスト上の並行Webサイトでも、このピークがないためです。私はApacheのドキュメントでこれを見つけました: https://wiki.apache.org/httpd/InternalDummyConnection
私が求めているのは、この CPU ピークが Apache 内部要求または間違った JVM パラメータ設定のような他のサーバー構成によって生成される可能性があるかどうかです。もう 1 つの考えは、メモリのクリーニングを開始するときに、このピークが JVM ガベージ コレクタによって生成される可能性があるということです... GC のリフレッシュ時間を指定する方法はありますか?
誰か提案がありますか?
pdf - cfhtmltopdf によるデッドロックのスタック トレース
最近、CF11 に切り替え、ファイルのダウンロードの一部をcfhtmltopdfを使用するように変換しました。PDF に対する複数のリクエストがある場合、FusionReactor で監視されているように、リクエストがハングし始めます。3 つまたは 4 つのタブを開き、すべて同時に PDF を要求することで、問題を再現できます。スタック トレースは、最後に処理された CFM 行が cfhtmltopdf であることを示しています。次に、何かのロックを取得しているように見え、2 つまたは 3 つの要求がこの状態でハングします。最終的に解決する場合 (10 分以上) もあれば、何時間もハングアップする場合もあります。誰かがこのスレッドダンプまたは問題に光を当てることができますか? PDFの作成が制限されているのは、おそらくCF Standard Editionのものですか?
coldfusion - クエリ オブ クエリの ColdFusion パフォーマンスへの影響
これは極端な大当たりですが、ボンネットの下で何が起こっているかを知っているエンジニアがここにいることがあります。
まず、ほとんどの場合、コードを書き直して QoQ を回避し、パフォーマンスを大幅に向上できることを知っています。しかし、私がデバッグしようとしているのは、将来のプロジェクトのガイドラインを作成するために、特定の条件下で QoQ を使用するコードのパフォーマンスが非常に低下する潜在的な理由です。
1) QoQ システムへのアクセスをシングル スレッドにする ColdFusion QoQ Java 実装について何かありますか? (これについて Railo の投稿を見ました)
2) FusionReactor によると、スタック トレースには常にQoQの評価フェーズ (90% の可能性) または実行フェーズ (10% の可能性) にリクエストがあり、それを取り巻くロジックの他の部分はありません。それは、クエリ パラメータを使用してループで実行されていることです。
ベスト プラクティスであるかどうかに関係なく、レポートを生成するために何万回もの繰り返しで QoQ を使用するいくつかの異なる機能があります。速度が低下する唯一のプロセスは、QoQ を使用するプロセスです。サーバーの再起動直後に開始しない限り、完了するまでに 10 倍の時間がかかります。FusionReactor は、QoQ の評価時または QoQ の処理時に常にスレッド状態を保持します。注意: ヒープと CPU は、全期間を通じて 20% 未満で安定しています。コードキャッシュ、perm など、すべてのメモリ空間が良好に見えます。
ループでQoQ を実行することは、それを実行する方法ではなく、変更する必要があることを知っていますが、答えを探しているだけです。コードはロックされていますか?それは利用可能なスレッドの問題ですか?声明の評価について何かありますか?再起動直後は問題ないのに、数時間以内に急速に劣化するのはなぜですか? それが私を悩ませているものです-私はそれがいつも永遠にかかっても大丈夫です.スタックオーバーフローに陥るのは奇妙なパターンです.
役立つ場合は、ColdFusion 10。