問題タブ [libxslt]
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.
python - AWS EB libxml2 および libxslt エラー
背景として、私は macOS を実行しており、Python アプリを AWS Elastic Beanstalk (EB) にデプロイしています。
私のアプリはローカルで実行する必要はありませんがlibxml2-devel
、libxslt-devel
Amazon EC2 にプッシュすると、何らかの理由で と の両方libxml2-devel
がlibxslt-devel
依存関係になります。SSH 経由で、両方を使用してインストールできsudo yum install -y libxml2-devel libxslt-devel
ます。これは私が修正できる問題ですか、それとも AWS EB の問題ですか?
libxslt
また、 libxml2 Python バインディングを取得するためにとの両方をアンインストールしてからインストールすることにうんざりlibxml2
していましたが、問題は解決しませんでした。
以下は、AWS ヘルス コンソールからのエラー メッセージです。
java - 多数のファイルの XSLT 変換を並行して効率的に実行するにはどうすればよいですか?
毎回 1 つのフォルダー内で大量の XML ファイル (最小 100K) を (基本的には、解凍された入力データセットから) 定期的に変換する必要があり、可能な限り最も効率的な方法でそれを行う方法を学びたいと考えています。私の技術スタックは、XLT と、Bash スクリプトから呼び出される Saxon XSLT Java ライブラリで構成されています。また、8 コアの Ubuntu サーバーと 64Gb の RAM を搭載した RAID の SSD で実行されます。私は XSLT を適切に処理していますが、まだ Bash と、そのようなタスクの負荷を適切に分散する方法を学んでいる最中です (その時点では、Java もほとんど単語にすぎません)。
私のアプローチは非常に非効率的であり、実際に適切に実行するには助けが必要だったため、以前にこの問題に関する投稿を作成しました(このSOF 投稿を参照)。後で多くのコメントがありましたが、問題を別の方法で提示することは理にかなっています。したがって、この投稿. 私はいくつかの解決策を提案されました.1つは現在私よりもはるかにうまく機能していますが、それでもよりエレガントで効率的である可能性があります.
今、私はこれを実行しています:
以前のいくつかのテストに基づいて、600 プロセスを設定しました。それ以上にすると、Java からメモリ エラーが発生するだけです。しかし、現在 30 ~ 40Gb の RAM しか使用していません (ただし、8 つのコアはすべて 100% です)。
一言で言えば、これまでに私が持っているすべてのアドバイス/アプローチは次のとおりです。
- XML ファイル全体をサブフォルダー (たとえば、5K ファイルごとに含む) に分割し、これを使用して、各サブフォルダーの変換スクリプトを並行して実行します。
- 特に、Saxon- EEライブラリ (マルチスレッド実行が可能) を
collection()
XML ファイルを解析する関数と共に使用します。 - タスク数の少ない Java 環境を設定するか、プロセスあたりのメモリを減らしてください。
- XSLTシートが対応しているかどうかについてSaxonを指定する
libxml/libxslt
(XSLT1.0だけじゃない?) - 次のような特殊なシェルを使用します
xmlsh
解決策 2 を処理できます。ループを制御して JVM を一度だけロードできるようにする必要があります。#1はもっと不器用に見え、Bashで改善する必要があります(負荷分散とパフォーマンス、相対/絶対パスへの取り組み); #3、#4、および#5は私にとってまったく新しいものであり、それに取り組む方法を確認するには、さらに説明が必要になる場合があります.
任意の入力をいただければ幸いです。