問題タブ [code-caching]
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.
ruby-on-rails - Ruby on Railsは「コードが変更されない限り」コントローラーをキャッシュできますか?
職場では、
が実行されると、すべてのコントローラーコードがキャッシュされます。これは、開発サーバーを高速化するためです。ただし、これは、コントローラーコードを変更するたびに、サーバーを再起動する必要があることを意味します。
したがって、コントローラーコードのキャッシュをすべてオフにすることができます。しかし、JavaScriptを含めるのと同様のメカニズムはあり得ません
コードが変更されていない限り、キャッシュされたバージョンを使用しますが、コードが変更されたときに再コンパイルしますか?
HAMLとSASSを頻繁に使用しているためか、一部のページ(サイトのホームページなど)の読み込みには、開発環境で40秒かかる場合があり、非常に長い時間がかかります。
ruby-on-rails - Rails で、Model、View、Controller、それらすべて、または個別にコード キャッシングを有効にする標準的な方法は何ですか?
Railsサーバーを実行するときに、次の行を使用して「すべてのモデル、ビュー、コントローラーコードをキャッシュする」と言う標準的な方法は本当ですか?config/environments/development.rb
そして、それらのいずれもキャッシュしないでください:
それらのいずれかを「選択的に」キャッシュするには、上記のfalse
行と in を使用しconfig/environment.rb
ます。
モデルコードのみをキャッシュします。また、Controller コードまたは View コードをキャッシュするには、どちらかを追加するだけです
また
の中に%W{ }
。たとえば、ビュー (HTML と CSS) のみを開発している場合は、サーバーの実行時にモデルとコントローラーのコードをリロードする必要がないためload_once_paths
、モデルとコントローラーを設定し、毎回ビューのコードをロードするだけですか? (これについて話しているドキュメントはありますか?)
java - Java と Tomcat - CodeCache がいっぱいです。コンパイラが無効になっています
私の状況
- ドキュメント分析用の Web サービスを開発しました
- この Web サービスは、txt および pdf ドキュメントを読み取ります
- PDFファイルを読むために、大学のアドバイザーが開発したJavaライブラリを使用しています
- 私はJava 7を使用しています
- 現在、Tomcat v7.0 にデプロイしています。
- アプリケーションから war ファイルを生成し、PC のローカル Tomcat でホストする場合、または Eclipse EE を介して Tomcat でアプリケーションを起動する場合、pdf ファイルの読み取りは問題ありません。
私の問題
- 私は自分で小さなサーバーをセットアップし(最高のハードウェア、デュアルコアCPU、4g RAMではありません)、Tomcat、Java、および必要と思われる残りをインストールしました。
- Tomcatマネージャーを使用してサーバーのTomcatにwarファイルをデプロイすると、アプリケーションにpdfファイルを読み取らせるまで、すべて正常に動作します。
- アプリケーションがいくつかのページを読み取った後、CodeCache がいっぱいになり、これが原因でコンパイルが無効になったというエラーが表示されます。
PDF インポート中のエラー出力の例
このログは、pdf がどのようにインポートされているかを示し、ある時点でエラー メッセージが開始されます。エラーメッセージを太字にしました。
...
2012 年 5 月 31 日 11:15:40 AM infovis.structure.pdf.PDFImport プロセス情報: 処理中のページ 13
2012 年 5 月 31 日 11:15:40 AM infovis.structure.pdf.PDFImport プロセス情報: 処理中のページ 14
2012 年 5 月 31 日 11:15:41 AM infovis.structure.pdf.PDFImport プロセス情報: 処理中のページ 15
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1858 nmethods=1318 adapters=490 free_code_cache=44631Kb largest_free_block=45618688 Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1859 nmethods=1318 adapters=490 free_code_cache=44631Kb largest_free_block=45618688
2012 年 5 月 31 日 11:16:19 AM infovis.structure.pdf.PDFImport プロセス情報: 処理中のページ 16
2012 年 5 月 31 日 11:16:20 AM infovis.structure.pdf.PDFImport プロセス情報: 処理中のページ 17
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1860 nmethods=1318 adapters=490 free_code_cache=44630Kb largest_free_block=45618688 May 31, 2012 11:17:07 AM infovis.structure.pdf.PDFImport process INFO: Processing Page 18 Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1861 nmethods=1318 adapters=490 free_code_cache=44633Kb largest_free_block=45618688
等々...
これまでに試したこと
サーバーの tomcat 構成でキャッシュ サイズを変更しようとしました (Linux シェルの操作が得意ではありません)。CodeCache サイズと他のキャッシュのサイズを増やそうとしましたが、問題は引き続き発生します。コードにリークの可能性がないかチェックしましたが、まだ見つかりませんでした (覚えておいてください。Eclipse 経由で開始すると、このメッセージが表示されないため、Tomcat(?) 構成の問題を示している可能性があります)。また、コードキャッシュがいっぱいになったときにコードキャッシュを空にするよう強制する「UseCodeCacheFlushing」パラメーターを設定しようとしましたが、どういうわけかアプリケーションの故障には影響しません。
私のTomcatサーバー構成
64 ビット アプリケーションの場合、デフォルトの CodeCache サイズは 32MB または 64MB であると読みました。512MB を確保しようとしましたが (設定が間違っていたのでしょうか?)、もちろん問題は再び発生しました。
ここで、JVM 起動パラメータを Java に渡すことができます。設定されていない場合、デフォルトのオプションは次のようになります: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
「-XX:+UseConcMarkSweepGC」を使用して、CMS ガベージ コレクターを有効にします (応答時間の改善)。そのオプションを使用し、1 つまたは 2 つのコアを含むちょうど 1 つの CPU チップを搭載したマシンで Tomcat を実行する場合は、「-XX:+CMSIncrementalMode」オプションも追加する必要があります。 JAVA_OPTS="-Djava.awt.headless=true -Xmx3g -Xms2g -XX:+UseCodeCacheFlushing -XX:+UseG1GC -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=512m"
これについての私の考え
調査中に、CodeCache 関連の問題はメモリ リークの問題を示している可能性があるというメモを見つけました。これは、プログラミング エラーが発生した場合であり、その結果、ガベージ コレクタがキャッシュを空にできません。これは可能かもしれませんが、悲しいことに、pdf を読んだライブラリのソース コードがありません。しかし一方で、ローカルのTomcat(クアッドコア、4x 3.0ghz、4g RAM)のデスクトップPCで650ページのpdfを読むのに問題はなく、これは私を混乱させます。
これは、glassfish などの別のサーバーを展開に使用すると解決できる tomcat の問題にすぎないのでしょうか?
誰かが私を助けたり、アイデアや提案を提供したりできますか? 多分私はいくつかの設定を間違っていましたか?私は tomcat や他のサーバーでの作業経験があまりないので、どんな助けでも大歓迎です。
すべての回答に感謝し、あなたが私と共有していると考えました.
ruby-on-rails - Mac OS X Mountain Lion で Ruby 2.0 にアップグレードした後、Rails がコードをキャッシュする
Rails 3.2.13 は、Mac OS X Mountain Lion 10.8.4 で Ruby 1.8.7 から Ruby 2.0 にアップグレードした後、開発モードでヘルパー モジュール、コントローラー、およびその他の Ruby コードをキャッシュしています
Railsコンソールでも毎回サーバーを再起動した後にのみ、コードの変更が反映されます。リロード!コンソールのコマンドも機能せず、Rails コンソールを再起動するまでコードの変更をリロードしません。
Javascript と Sass ファイルはキャッシュされませんが、ビュー、コントローラー、およびその他の Ruby コードはキャッシュされます。development.rb ファイルを確認したところ、次のキャッシュ設定が false に設定されています。
また、サーバーを起動すると、コンソールログに表示されるように開発モードで起動します
何が起こったのかわかりませんが、テスト目的でシステムのタイムゾーンと時刻を変更し、時刻を実際の時刻に戻しました。
正しい時間とタイムゾーンでマシンを再起動した後、レポをシステムに再度 git clone しましたが、まだ問題があります。これを修正する方法、または開発モードでリクエストが行われるたびにすべてのルビーコードを強制的にリロードする方法を知っている人はいますか?
ruby-on-rails - rspec で動的 mixin を使用してクラスをリロードする
私は次のモデルを持っています
ただし、rspec テストの実行中、最初の Chicken が性別で初期化された後、通信メソッドがキャッシュされ、config/environments/test.rb で cache_classes が false に設定されていても、すべての Chicken は性別に関係なく同じことを言います。
テストの実行中に Chicken クラスをリロードするか、このコードを変更してこの問題を解決するにはどうすればよいですか?
java - JSF / Primefaces アプリケーションを使用する場合の Java CodeCache サイズ
体験談などお聞きしたいです。過去数か月で、いくつかの主要なパフォーマンスの問題に取り組みました。ユーザーが JSF / PrimeFaces Web アプリケーションを長時間使用すると、実行時のパフォーマンスがどんどん遅くなっていきました。これが私たちの環境です:
- JBoss アプリケーション サーバー (EAP 6.2.2)
- ジャワ7 (45)
- JSF 2.1.25
- プライムフェイス 3.5.3
しばらく調査した結果、サーバー JVM の CodeCache (デフォルトは 48MB) がほぼ満杯であることがわかりました。そして、アプリケーション サーバーを再起動した後、パフォーマンスは再び非常に良好になりました。CodeCache のサイズが 1 日あたり約 3 ~ 4 MB 増加していることがわかりました。キャッシュの上限に達すると、パフォーマンスが低下します。
最初は JVM パラメータを使用しました-XX:+UseCodeCacheFlushing
。しかし、十分なメモリをフラッシュしていないようです。そこで、コード キャッシュ サイズを 128MB に増やすことにしました ( -XX:ReservedCodeCacheSize=128m
)。現在、パフォーマンスは長期間良好ですが、問題を先延ばしにしただけです。
そこで、同じような問題に直面している人がいるかどうかを尋ねたいと思います。
- CodeCache の使用量が着実に増加していることは問題ありませんか?
- 推奨される CodeCache サイズのサイズはどれくらいですか?
これについてチャットできればと思います。だれかがヒントをくれるかもしれません。
前もって感謝します、SlimShady