相关疑难解决方法(0)

同步与异步数据库访问

我想开发一个复杂的游戏,可能有数千个函数和数据库调用.

我想知道是否真的有必要在异步中进行数据库查询.编写代码很麻烦,我的所有函数都需要使用回调而不是clean return方法.这是正常的做法吗?

考虑到MySQL数据库一次处理一个查询,是否真的更快地将这些调用编码为异步?

javascript asynchronous node.js

10
推荐指数
2
解决办法
7470
查看次数

javascript - 事件驱动和并发问题?

问候,

我一直在研究javascript,nodejs.我不明白如何在javascript中避免并发问题.

让我们说我正在研究一个物体

var bigObject = new BigObject();
Run Code Online (Sandbox Code Playgroud)

我有一个setTimer(function(){ workOnBigOjbect...} )也会做的工作bigOjbect.

如果我正在写入磁盘IO bigObject,并且计时器对象正在处理bigObject,并且定期进行代码读取bigObject,那么如何避免并发问题?

在常规语言中,我将使用互斥或​​线程安全队列/命令模式.我也没有看到很多关于javascript竞争条件的讨论.

我错过了什么吗?

javascript concurrency race-condition node.js

8
推荐指数
1
解决办法
3757
查看次数

使用mysql池对node.js(集群)的性能进行基准测试:Lighttpd + PHP?

编辑(2):现在使用db-mysql和generic-pool模块.错误率显着下降,徘徊在13%,但吞吐量仍然在100 req/sec左右.

编辑(1):在有人建议ORDER BY RAND()会导致MySQL变慢之后,我从查询中删除了该子句.Node.js现在徘徊在100 req/sec左右,但服务器仍然报告"CONNECTION error:Too many connections".

使用PHP的Node.js或Lighttpd?

你可能看到了很多"Hello World"对node.js进行基准测试......但是"hello world"测试,甚至那些每个请求延迟2秒的测试,甚至都没有接近真实世界的生产用量.我还使用node.js执行了"Hello World"测试的那些变体,并且看到吞吐量大约为800 req/sec,错误率为0.01%.但是,我决定进行一些更现实的测试.

也许我的测试不完整,很可能关于node.js或我的测试代码真的是错误的,所以如果你是node.js专家,请帮我写一些更好的测试.我的结果发表在下面.我使用Apache JMeter进行测试.

测试用例和系统规范

测试非常简单.用户数量的mysql查询是随机排序的.检索并显示第一个用户的用户名.mysql数据库连接是通过unix套接字.操作系统是FreeBSD 8+.8GB的RAM.Intel Xeon四核2.x Ghz处理器.在我遇到node.js之前,我稍微调整了Lighttpd配置.

Apache JMeter设置

线程数(用户):5000 我相信这是并发连接数

加速期(以秒为单位):1

循环次数:10 这是每个用户的请求数

Apache JMeter结果

Label                  | # Samples | Average  | Min   | Max      | Std. Dev. | Error % | Throughput | KB/sec | Avg. Bytes

HTTP Requests Lighttpd | 49918     | 2060ms   | 29ms  | 84790ms  | 5524      | 19.47%  | 583.3/sec  | 211.79 | 371.8

HTTP Requests Node.js …

php mysqli lighttpd node.js

7
推荐指数
2
解决办法
8602
查看次数

Node.js child_process.fork()在不同的CPU核心上运行

我有一个运行长期执行进程的应用程序.为了使速度更快,我进行简单的数据分片并希望并行运行它们,只需通过.fork()相同应用程序的2个实例.

我在那里有2台核心机器,并希望确保使用2个核心,第一个实例在第一个核心上运行,第二个核心在第二个核心上运行.

我知道cluster模块,但在这种情况下似乎不相关,因为我不需要运行HTTP服务并在它们之间进行负载平衡.只是工人(意思是,他们不需要彼此沟通,发送消息或其他任何东西 - 他们只是做HTTP请求并将数据存储到数据库).

是否有可能控制node.js进程采用哪个CPU内核?如何在Mac/Linux上监控?

fork multiprocessing node.js

7
推荐指数
1
解决办法
1853
查看次数

单独一个线程上的javascript回调函数

Javascript是单线程的.那么回调函数和它的包含函数是否在与主循环/事件循环相同的线程上执行?

database.query("SELECT * FROM hugetable", function(rows) {  // anonymous callback function
   var result = rows;
   console.log(result.length);
});
console.log("I am going without waiting...");
Run Code Online (Sandbox Code Playgroud)

如果query()方法及其回调函数在与事件循环相同的线程上执行,则会发生阻塞.如果不是为什么Javascript被称为单线程?

任何人都可以帮助验证javascript(browser/node.js)是否在场景后面使用多个线程以实现非阻塞?

谢谢,

朋友们,我看到了你的意见和答案.对不起,我对javascript很新.我很困惑,单线程asyn调用不会阻塞.如果有100个用户从hugeTable请求数据,这可能每个并发一分钟,并且事件循环将这些任务分配到一个队列并依次执行它们,query()方法执行如何不阻止事件循环,因为它们全部打开一个单线程?

布拉德回答了这一部分

javascript jquery multithreading javascript-events

7
推荐指数
1
解决办法
3034
查看次数

不同核心上的node.js的多个实例

我想设置4个不同的node.js实例,每个实例都在自己的核心上.node.js是否在同一个核心上堆叠新实例,还是将它们设置在新核心上?

实例不相关并单独接收请求.我希望cpu负载均匀分布.我无法找到这个问题的明确答案.

javascript webserver node.js

6
推荐指数
1
解决办法
7577
查看次数

将一个函数作为单独的node.js进程运行?

是否可以将函数作为完全独立的node.js进程运行?例如:

var parallel = require("parallel");
parallel(function(){
    var app = require("express")();
    app.on("/",function(req,res){ res.send("hi"); });
    app.listen(80);
},function callback(err,stdout){
    console.log("process terminated!")
});
Run Code Online (Sandbox Code Playgroud)

有可能吗?

parallel-processing concurrency asynchronous node.js

5
推荐指数
1
解决办法
1847
查看次数

Node.js CPU负载平衡

我用JMeter创建了测试来测试Ghost博客平台的性能.Ghost用Node.js编写,安装在1Gb RAM,1个CPU的云服务器上.

我注意到400个并发用户JMeter收到错误后.直到400个并发用户负载是正常的.我决定增加CPU并增加1个CPU.

但错误再现并增加了2个CPU,共4个CPU.在400个并发用户之后出现问题.

我不明白为什么1个CPU可以处理400个用户,而4个CPU可以处理相同的结果.

在监视期间,我注意到只有一个CPU忙,另外三个CPU空闲.当我在控制台中检查JMeter摘要时出现错误,大约是请求的5%.见截图.

CPU利用率

我想知道是否可以平衡CPU之间的负载?

cpu performance jmeter cpu-usage node.js

5
推荐指数
1
解决办法
4465
查看次数

我们可以同时使用NGINX和PM2进行node.js生产部署吗?

我是Node.js的新手。我已经建立了我的第一个Node.js服务器。我正在做一些研究,以提高生产中的节点js服务器的性能。因此,我了解了NGINX和流程管理器(PM2)。

NGINX:

  1. 它可以负载平衡传入的请求。
  2. 它可以充当我们应用程序的反向代理。

PM2:

  1. 尽管它具有内置的负载均衡器,但可以将我们的应用程序划分为群集。
  2. 崩溃时,我们可以监视并重新启动应用程序。

我们可以同时用于生产吗?

虽然PM2中有负载均衡器,但是我只能使用PM2吗?

使用NGINX而不是PM2有什么优势?

如果我使用NGINX的负载平衡器和PM2的群集,是否会比仅使用一个负载均衡器(NGINX或PM2)提供更好的性能?

nginx node.js express pm2

5
推荐指数
1
解决办法
2886
查看次数

如何在枪炮中过期(并复活)工人?

我有一个缓慢的内存泄漏的应用程序,由于各种原因,我无法摆脱.因此,我想使用让我的工人定期死亡和复活的旧技巧.

(即在多处理池中使用与maxtasksperchild相同的策略......"......在其他系统(例如Apache,mod_wsgi等)中找到的频繁模式可以释放工作人员所拥有的资源,这样可以让池中的工作人员完成退出之前只有一定数量的工作,被清理并产生一个新的过程以替换旧的......")

到目前为止,我能够想到的最好的方法是让一个线程可以休眠,然后再打电话os._exit(-1).

这是要走的路,还是有更好的方法定期回收我的工人?

这是我现在要走的路:

class Quitter(Thread):

    def run(self):
        while True:
            time.sleep(random.randrange(5, 7)):
            print str(os.getpid())
            os._exit(-1)

Quitter().start()
Run Code Online (Sandbox Code Playgroud)

Gunicorn响应:

2013-03-13 03:21:24 [6487] [INFO] Booting worker with pid: 6487
...
2013-03-13 03:21:30 [6492] [INFO] Booting worker with pid: 6487
Run Code Online (Sandbox Code Playgroud)

python gunicorn

4
推荐指数
1
解决办法
1342
查看次数