できるだけ多くの要求を処理し、要求ごとに1つのファイルを書き込もうとしています。小さなペイロードは正常に動作しますが、同期バージョンが正常に動作している間は高負荷のシナリオでは、非同期バージョン(fs.writeFile)がハングします。ノードは要求の処理を停止し、ほとんどのファイルを0のサイズで残します(大部分は作成されません)。 Ubuntuの(VM)およびMac OSXで高負荷でfs.writeFileがハングします(v.0.6.6ではエラーなし)
{ stack: [Getter/Setter],
arguments: undefined,
type: undefined,
message: 'EMFILE, Too many open files \'aw_1031\'',
errno: 24,
code: 'EMFILE',
path: 'aw_1031' }
同じ動作:
は、私たちが得たv.0.4.7ではv0.6.6
に誤りがありません。
これは、我々が現在実行されているスクリプトの例です:
ab -n 30000 -c 500 http://HOST:8000/
filetest.js
var http = require('http');
var fs = require('fs');
var util = require ('util');
var i=0;
function writeALot(req, res){
fs.writeFile("filetest"+i, "Just a try: "+i,
function(err){
if(err) console.log(util.inspect(err));
});
i++;
res.writeHead(200);
res.end();
}
http.createServer(writeALot).listen(8000);
どのように我々は、同時FDの最大数を管理することができますか?何かアドバイス?
ありがとうございます。
ありがとう、ノードv0.6.6で認識されたバグです(ハングしてもエラーなし)。しかし、それは私のせいです:)ノードは私に魔法を期待しています。私たちはリソースにもっと気を配ります。 – Perrolobo