<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="10个Nodejs的性能优化技巧" id="card1">
<p> 游客</p><p>
标题:10个Nodejs的性能优化技巧<br/>
正文:<br/>
下面是我们使用Node.js时遵循的10个性能规则：1. 避免使用同步代码在设计上，Node.js是单线程的。为了能让一个单线程处理许多并发的请求，你可以永远不要让线程等待阻塞，同步或长时间运行的操作。Node.js的一个显著特征是：它从上到下的设计和实现都是为了实现异步。这让它非常适合用于事件型程序。不幸的是，还是有可能会发生同步/阻塞的调用。例如，许多文件系统操作同时拥有同步和异步的版本，比如writeFile和writeFileSync。即使你用代码来控制同步方法，但还是有可能不注意地用到阻塞调用的外部函数库。当你这么做时，对性能的影响是极大的。// Good: write files asynchronously<br/>fs.writeFile('message.txt', 'Hello Node', function (err) {<br/> console.log(&quot;It's saved and the server remains responsive!&quot;);<br/>});<br/> <br/>// BAD: write files synchronously<br/>fs.writeFileSync('message.txt', 'Hello Node');<br/>console.log(&quot;It's saved, but you just blocked ALL requests!&quot;);我们的初始化log在实现时无意地包含了一个同步调用来将内容写入磁盘。如果我们不做性能测试那么就会很容易忽略这个问题。当以developer box中一个node.js实例来作为标准测试，这个同步调用将导致性能从每秒上千次的请求降至只有几十个。2.关闭套接字池Node.js的http客户端会自动地使用套接字池：默认地，它会限制每台主机只能有5个套接字。虽然套接字的重复使用可能会让资源的增加在控制之下，但如果你需要处理许多数据来自于同一主机的并发请求时，将会导致一系列的瓶颈。在这种情况下，增大maxSockets 的值或关闭套接字池是个好主意：// Disable socket pooling<br/> <br/>var http = require('http');<br/>var options = {.....};<br/>options.agent = fa<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1487&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1487&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1487&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1487&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1487&amp;Page=4">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1487">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1487">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>