2017-11-21 3 views
0

RにはCPU以上のものが必要なため、新しい世代のコンピュータ最適化インスタンスタイプの1つ、できればSSDディスクを選択することをお勧めします。OpenCPUでのメモリ使用率が高い

私は最近負荷テスト中に高いメモリ使用率(100%に急上昇)で問題に遭遇しました。再現する:無ストレス条件で処理時間が最大0.2までのRパッケージがあります。

cannot popen '/usr/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory' In call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE) 

セットアップがAWS 8ギガバイトの2倍されています。私は、並行して「フォークすることはできません」またはになり急に使用されているメモリのすべてを3台のマシン上curl 1000 jsonsを使用してエンドポイントの1つを照会しようとしている場合CPUに最適化されたサーバー+ロードバランサはすべてプライベートネットワーク内にあります。 HTTPSが有効になっており、私の主な用途はリクエストのオンライン処理なので、私はたいてい/jsonエンドポイントに問い合わせています。

この問題へのアプローチ方法についてご意見はありますか?この計画では、より多くのパッケージがインストールされており(より多くのオンラインプロセスがさまざまな機能からの結果を要求しています)、1ボックスあたり32GBのRAMを持つことをやめたくありません。

パッケージのすべて

は、そのようなオプションを使用して配備されている: - プリロードセクション

LazyData: false 
LazyLoad: false 

彼らはまた、serverconf.yml.j2に追加されます。 RDataファイルは、utils::dataを呼び出してonLoadファンクション内にロードされます。

また、私はgithubなしでOpenCPUを使用しています(バックエンドからocpuボックスまで)一方向通信のみを使用していますが、どのオプションを有効にするか/最適化することをお勧めしますか?それはまだ文書に明確に述べられていません。

答えて

1

主に使用しているパッケージと現在行っていることによって異なります。 opencpuを使用して起動しているのと同じ機能を、コマンドラインでローカルに実行することができますか?

Apache2 preforkは、同時リクエストを処理するワーカープロセスを作成します。これらの各作業者には、すべて事前にロードされた パッケージのRプロセスが含まれています。したがって、1つの要求が500MBを要する場合、サーバ上での合計メモリは、n * 500であり、nは、ロードされた作業者の数である です。

同時リクエストの期待数に応じて、 をStartServersまたはMaxRequestWorkersをapache2の設定で下げてみてください。

また上げ(または下げ)してみてくださいメモリの量(アドレス空間)を消費することが許可されている単一のプロセスを制限し、ファイル/etc/opencpu/server.conf内のオプションrlimit.as

関連する問題