Articles of node.js

atop中的过程/ CPU度量究竟意味着什么?

我一直在使用优秀的atop来详细检查负载testing的影响,而顶部(系统范围)部分中的SystemLevel / CPU指标与底部(每个进程)部分中的ProcessLevel / CPU指标之间的区别我感到困惑。 我知道类似的问题,但我还没有find一个解释使用我已经理解的上下文。 1.是可用容量的百分比,还是已用容量的百分比? ProcessLevel / CPU指标在联机帮助页中描述为“此系统级上与此资源的可用容量相关的此过程的占用率”。 与此相对照: ProcessLevel / DSK(“该进程的占用率与所有进程产生的总负载有关(即最后一个时间间隔期间所有进程的磁盘访问总数)”)和 (“自上次屏幕更新以来CPU时间所占的份额,占CPU总时间的百分比”)。 这两者似乎都是指与“…… 使用的能力……”有关的占有率,与“…… 可用能力……”有很大的不同。 假设手册页描述是正确的… 2.什么是“可用容量”? 如果真的在监测“可用容量”,这是什么意思? 下图显示了当CPU处于43%空闲状态时,ProcessLevel / CPU处于97%的状态,似乎表明它不能与SystemLevel / CPU最大值紧密相关。 它可能是考虑到磁盘或networking等待时间? 3.怎么可能> 100%? 这只是统计/抽样误差? 它是否与顶级的%CPU一样受到“100%= 1最大CPU”的影响? 如果是这样,我们的单线程pal节点如何在下面的最终示例中使用> 100%? 说明性的样品 作为例子(可能会打开更多的节点/ xen / aws蠕虫,在这种情况下抱歉,但我仍然欣赏SF的智慧,并且很高兴产生其他问题)… 我正在testing的节点应用程序(也是优秀的vegeta)以10req / s的速率在4-CPU AWS实例上愉快地处理特定的uploady请求types。 在此负载下,节点的ProcessLevel / CPU约为69%: CPU sys: 73% | user: 155% | irq: 6% […]

Nginx反向代理file upload失败

我正在运行Nginx的v1.8.0来服务我所有的静态文件和node.js来做dynamic的东西。 Nginx需要做的一件事就是将代理文件转移到存储文件的node.js中。 node.js似乎得到〜26K的文件,然后什么都没有(甚至不知道当数据“完成”发送时连接closures)。 我的configuration是这样的: location /attachment_upload/ { client_body_temp_path /tmp/; client_body_in_file_only clean; client_body_buffer_size 256k; client_max_body_size 1g; proxy_set_header X-FILE $request_body_file; proxy_http_version 1.1; proxy_buffering off; proxy_pass http://10.10.1.20:8090/attachment_upload/; expires epoch; } 我已经安装了curl,看看能否获得更多信息。 它立即返回(所以它看起来不像是我的超时),没有错误。 我检查了Nginx错误日志,没有看到任何内容。 如果我拿Nginx的图片node.js完全是我所期望的。 我已经呆了好几天了。 我已经尝试了我遇到的一切。 不知道接下来要检查什么…

使用apache2服务器的nod​​ejs应用程序总是显示503

我有一个运行所有我的PHP Web应用程序的apache2服务器,我试图运行一个nodejs应用程序。 我已启用代理和proxy_http,但始终显示503服务不可用页面 <VirtualHost *:80> SERVERNAME abc.mysite.com SERVERALIAS www.abc.mysite.com DocumentRoot /var/www/html/node_app/ options -Indexes ProxyRequests off #ProxyPass /maintenance.html ! ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ </VirtualHost> node_app文件夹中有启动快速服务器的app.js 这是我的app.js var http = require('http'), express = require('express'), chatServer = require('./lib/chat-server'); var app = express(); app.use(express.static(__dirname + '/public')); var server = http.createServer(app).listen('3000', '127.0.0.1'); app.get('/', function(req, res){ res.sendFile(__dirname + '/views/index.html'); […]

Node.js程序无法读取带有Buffer错误的.log文本文件

我正试图用一个名为“logging器”的程序查看日志。 当我运行node logger ,出现以下错误: <Buffer 66 72 75 69 74 69 73 68 79 0a> “logging器”程序文件如下所示: var fs = require('fs'); var file = fs.createReadStream("veg.log"); file.on('readable', function() { var stream = null; while(null !== (stream = file.read())) { stream.toString(); console.log(stream); } }); 有没有人有一个想法是什么导致错误? 日志文件只是纯文本。 为什么这会导致我的缓冲区出现错误,以及如何找出它是哪个缓冲区,以及导致它被错误访问的原因?

允许node.js应用程序在没有sudo的情况下运行libpcap(“Symlink”问题)

我想使用下面的命令来允许使用libpcap软件包,而不用sudo(在debian系统上): sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/nodejs 我得到这个错误: Failed to set capabilities on file `/usr/bin/nodejs' (Invalid argument) The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file 但是/usr/bin/nodejs不是符号链接: -rwxr-xr-x 1 root root 18M Jun 3 03:20 /usr/bin/nodejs USER@HOST:~$ which nodejs /usr/bin/nodejs 我的驱动器是这样安装的: USER@HOST:~$ cat /etc/fstab […]

nginx作为WebSocket的代理:检查并阻止某些请求

我将NodeJS作为一种服务于AngularJS前端的Web应用程序服务器来运行。 他们仅通过WebSockets进行通信,使用Socket.IO的SailsJS实现。 在前端(客户端)和NodeJS后端之间,nginx作为代理,像这样configuration: server { listen 1337 ssl; location /socket.io/ { proxy_pass https://localhost:1338; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 到现在为止还挺好。 我现在想要监视和保护WebSocket连接。 特别是,我想防止XSS攻击,并排除试图暴力login到我的应用程序的IP。 我很新的东西,但经过一些研究,我遇到了fail2ban和nginx-naxsi这可能正是我所需要的。 但是,我不知道如何使他们与我的设置工作。 这甚至有可能吗? 我可以以某种方式拦截通过在代理中的WebSocket(是Nginx)隧道通信?

带有ProxyPass到node.js服务器的Apache VirtualHost拒绝工作('无法parsing主机名')

我在我的Mac上运行本地Apache进行开发,并且还有运行在http://127.0.0.1:8000/ node.js服务器。 我使用Apache项目的.dev域,并希望.node域redirect到node.js服务器。 我有虚拟主机设置如下: <VirtualHost *.dev:80> VirtualDocumentRoot "/www/sites/%1/wwwroot" ServerName sites.dev ServerAlias *.dev UseCanonicalName Off </VirtualHost> <VirtualHost *.node:80> ServerName sites.node ProxyPass "/" "http://localhost:8000" ProxyPassReverse "/" "http://localhost:8000" </VirtualHost> 但是,当我尝试应用这些设置时,出现错误: [core:error] [pid 8594] (EAI 8)nodename nor servname provided, or not known: AH00547: Could not resolve host name *.node — ignoring! 我应该注意到, .dev域可以按照预期工作,并且node.js服务器可以在http://localhost:8000/ ,只是不在http://test.node/ 。 我在这里错过了什么?

node-waf nodejs失败

当试图为NodeJS编译Gilt Hummingbird时,我得到这个错误,因为node-waf丢失了。 rm -rf build .lock-wscript bson.node node-waf configure build make[1]: node-waf: Command not found make[1]: *** [all] Error 127 我不确定如何正确编译或安装node-waf。 我试过从源代码编译,但似乎没有工作。 Ubuntu 10.10,NodeJS v0.2.5,nodejs-dev安装。

如何将域指向我的Web服务器

我在我家的一台电脑上安装了一个使用node.js的web服务器。 Godaddy让我select指向一个IP地址。 我知道我家里的所有电脑都有相同的IP地址,那么我怎么把它指向运行着networking服务器的那台呢? 提前致谢

“forever”守护进程cachingNode.js脚本吗?

“ 永远 ”的守护进程是否知道我是否更新了我的Node.js脚本? 如果永远守护进程正在后台运行,那么我更改Node.js脚本是否安全?