Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejshttp服务器连接memcache_Node.js - Fatal编程技术网

Node.js nodejshttp服务器连接memcache

Node.js nodejshttp服务器连接memcache,node.js,Node.js,我使用nodejs构建了一个http服务器。每次请求收入时,http服务器连接到memcache,检查并返回数据或执行其他操作。当我使用Apache基准测试性能时,比如:-n 1000。输出显示它刚刚完成了大约900个请求,然后http服务器就不能再提供服务了。 我做错了什么?你能解释一下发生了什么吗 这是我的代码: http.createServer(function(req, res) { var client = new mc.Client(ip, mc.Adapter.binar

我使用nodejs构建了一个http服务器。每次请求收入时,http服务器连接到memcache,检查并返回数据或执行其他操作。当我使用Apache基准测试性能时,比如:-n 1000。输出显示它刚刚完成了大约900个请求,然后http服务器就不能再提供服务了。 我做错了什么?你能解释一下发生了什么吗

这是我的代码:

http.createServer(function(req, res) {
    var client = new mc.Client(ip, mc.Adapter.binary);
    client.connect(function() {
    client.get(key, function(err, response) {
    if(err) { //not exist
        ..
        res.end(result)
    ..
    }
    else {  //exist in memcache
        var result = response[key];   
        res.end(result);
    }
});   
})); }); 以下是基准测试后的结果:

This is ApacheBench, Version 2.4.1 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
apr_poll: The timeout specified has expired (70007)
Total of 896 requests completed
这是ApacheBench,版本2.4.1
版权1996亚当·特维斯,宙斯科技有限公司,http://www.zeustech.net/
授权给Apache软件基金会,http://www.apache.org/
基准127.0.0.1(耐心等待)
完成100个请求
已完成200个请求
已完成300个请求
已完成400个请求
完成了500个请求
已完成600个请求
已完成700个请求
已完成800个请求
apr_轮询:指定的超时已过期(70007)
共完成896项申请

更新:我发现我没有断开每个请求的memcached连接。问题解决了

nodejs应用程序的一个棘手问题是内存上限为1.4GB。如果您的服务器使用超过允许的限制,它将挂起或崩溃。您可以自定义构建nodejs应用程序以增加此值

确保在未使用变量时对其进行垃圾收集(如将某些模块作用域变量设置为null)


我没有足够的信息告诉你哪里出了问题。我建议查看服务器日志。

我更新了代码。我不认为内存不足,服务器似乎无法从memcache中获取数据。我认为您的if-else逻辑不正确。错误并不意味着密钥不存在。我相信当密钥不存在时返回nil。错误是因为在处理给定命令时失败。是的,我知道,但当我使用mc模块和密钥不存在时,打印的错误和响应也是空的。如果无法连接memcache,我在mc模块中找不到任何api,比如超时。。所以我必须先启动memcache。