Articles of node.js

Monit不会启动我的节点js应用程序

Monit有一个问题,用于监视我的Node.js应用程序。 我刚刚从一台核心机器移到了多核心机器。 在他们两个上运行Ubuntu 11.10。 在旧的这个工作。 下面的这个脚本使用了一个新的脚本,我根据这个configuration: http : //howtonode.org/deploying-node-upstart-monit check process nodejs with pidfile "/var/run/myapp.pid" start program = "/sbin/start myapp" stop program = "/sbin/stop myapp" if failed port 80 protocol HTTP request / with timeout 10 seconds then restart 现在当我尝试运行它时,例如: monit -d 60 -c /etc/monit/monitrc一切正常: monit daemon at 1312 awakened 在马上启动myapp的旧机器上。 在新的一个没有。 mayer问题是,当我的Node应用程序崩溃monit不帮助我。 我知道了

Nginx websocket 502坏的网关

我试图使用nginx作为websocket nodejs服务器的代理,但我总是得到502坏的网关。 我的域名configuration: upstream server { server 127.0.0.1:8090; } server { listen 8085; server_name server.cz server; ssl on; #ssl_certificate /etc/ssl/server/server.cz.pem; ssl_certificate /etc/ssl/server/server.cz.crt; ssl_certificate_key /etc/ssl/server/server.cz.key; access_log /var/log/nginx/server.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://server; proxy_redirect off; #WEBSOCKET proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } […]

带有PM2的Node.js服务器崩溃,错误ENOMEM – 但没有内存泄漏

我有一个EC2实例运行node.js服务器(基于Express)。 在新的环境中部署后,我的服务几乎立即崩溃, spawn ENOMEM像这样的spawn ENOMEM错误: 服务器日志不表示不正常的活动。 来自其他环境的差异仅仅是configurationstring,如DB主机名。 我已经开始在服务器上的所有可能的监控,但没有显示 没有更高的进程或机器的内存,CPU / RAM使用率没有高峰。 为了确定这不是一个内存问题,我尝试将实例从t2.micro放大到t2.large(2GB-> 8GB RAM),尽pipe在不同的环境中对微处理器执行相同的过程。 尽pipe如此,这个过程还是以几分钟的时间崩溃了。 我坚信这不是内存泄漏,但可能是某种内存分配问题。 有没有人遇到这样的问题? 任何forms的帮助表示赞赏。

无法让websockets通过apache HTTPS代理(302错误)

我无法通过HTTPS使用apache代理使节点后端上的websocket工作来连接到节点实例。 如果不使用(apache)http代理,Websockets可以正常工作。 我的设置:我有一个具有多个虚拟主机的Apache服务器。 我有一个HTTPS网页myserver.com和HTTPS API与api.myserver.com子域中的节点/ express / ws通过代理,将请求redirect到端口3333上运行的node.js实例(在PM2上的多个实例) 。 这是我的子域的apache虚拟主机: <VirtualHost *:443> ServerName api.myserver.com ServerAdmin [email protected] DocumentRoot /var/www/html/myserver/api Options -Indexes SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/certs/STAR_myserver_co.crt SSLCertificateKeyFile /etc/apache2/certs/myserver_private_key.pem SSLCertificateChainFile /etc/apache2/certs/STAR_myserver_co.ca-bundle SSLProxyEngine On ProxyPreserveHost On ProxyRequests Off # This is for websocket requests ProxyPass /wss/ wss://localhost:3333/ ProxyPassReverse /wss/ wss://localhost:3333/ # This is for […]

debuggingNode.js磁盘I / O和CPU峰值

我在Ubuntu上运行了一个Node / Meteor / Mongo应用程序(在Digital Ocean 1GB液滴上),而且我看到一些奇怪的磁盘I / O尖峰,然后是CPU尖峰: 我在想: 如果这种模式对应于任何已知的问题? 我可以用什么工具或策略来解决这个问题? 我在服务器和性能监控方面相当新颖,所以任何帮助将不胜感激,无论多么基本!

为什么暴发户吃我所有的RAM?

我在EC2中运行Ubuntu Server 12.04 LTS。 我有几个node.js守护进程作为服务运行在新贵,以及通常的init的东西。 每次部署之后,所有node.js守护进程重新启动,“init”进程开始以大约0.5MB / min的速度增长。 如果我重新启动一个特定的守护进程,init会回到<50MB。 我的进程可以做些什么来引起暴发户吃我的RAM? 从顶部输出: 8月1日23:51 UTC PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17627 root 20 0 307m 90m 3444 S 0 5.3 146:18.06 chef-client 1 root 20 0 67680 44m 1140 S 1 2.6 59:11.04 init 17857 appserve 20 0 927m 30m […]

使用npm install作为MS-Windows系统帐户

我有一个节点应用程序运行在Windows上,我想能够自动更新。 当我运行npm install -d作为Administrator帐户 – 它工作正常,但是当我试图通过我的自动化软件(即作为local system运行)运行它时,我遇到错误,当我尝试从私人安装专用模块git存储库: npm ERR! git clone [email protected]:team/repository.git fatal: Could not change back to 'C:/Windows/system32/config/systemprofile/AppData/Roaming/npm-cache/_git-remotes/git-bitbucket-org-team-repository-git-06356f5b': No such file or directory npm ERR! Error: Command failed: fatal: Could not change back to 'C:/Windows/system32/config/systemprofile/AppData/Roaming/npm-cache/_git-remotes/git-bitbucket-org-team-repository-git-06356f5b': No such file or directory npm ERR! npm ERR! at ChildProcess.exithandler (child_process.js:637:15) npm ERR! at ChildProcess.EventEmitter.emit (events.js:98:17) npm ERR! […]

Appengine卡在“正在更新服务 …”

我在appengine上使用nodejs。 星期二我们有一个非常稳定的应用脚手架,到了星期五,尝试部署后它完全被打破了。 我们对前端代码做了一些小的改动,但是我认为没有什么会阻止实例的旋转。 这里是重现的步骤。 gcloud –project "{appname}" preview app deploy 日志显示npm安装,容器构build等 挂起Updating service [default]… 5分钟 失败,错误。 错误:(gcloud.preview.app.deploy)错误响应:[13]启动虚拟机时超时。 应用程序代码可能是不健康的。 (准备好0/1,仍然在部署1)。 我已经尝试恢复存储库,当我们有稳定的部署,并没有帮助。 这让我觉得GCP上的东西坏了。 我试图删除所有当前版本,然后部署,但无济于事。

如何以pm2运行node.js应用程序而不以root身份运行它们?

我已经安装了pm2来运行一个node.js应用程序,我可以成功启动它,它会重新启动后重新生成。 但是,pm2守护进程是以root身份运行的,这让我认为我的所有节点脚本也以root身份运行? 即使我把它们作为普通用户添加到系统中。 日志文件和东西是在用户主目录dir /〜/ /~/.pm2/logs logs中/~/.pm2/logs ,但日志是由root拥有的。 当我调用pm2 startup (处理init.d脚本的安装等)时,它会创build/etc/init.d/pm2-init.sh ,如下所示: #!/bin/bash # chkconfig: 2345 98 02 # # description: PM2 next gen process manager for Node.js # processname: pm2 # ### BEGIN INIT INFO # Provides: pm2 # Required-Start: # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: […]

处于TIME-WAIT状态的套接字数量较多,服务器在加载时无响应

我们的应用程序在高负载下变得反应迟钝,等待时间更长。 进程使用率exception低(每个进程约15%的CPU利用率,我们的应用程序运行8个进程)。 Nginx错误日志输出显示了一些这些: 2014/12/04 03:39:31 [crit] 24383#0: *2008067 connect() to 127.0.0.1:4567 failed (99: Cannot assign requested address) while connecting to upstream, client: 108.162.246.229, server: example.org, request: "GET /socket.io/?EIO=3&transport=polling&t=1417682366937-11501 HTTP/1.1", upstream: "http://127.0.0.1:4567/socket.io/?EIO=3&transport=polling&t=1417682366937-11501", host: "example.org", referrer: "https://example.org/unread" 我所看到的 ss -tan | grep TIME-WAIT | wc -l输出 ss -tan | grep TIME-WAIT | wc -l ss -tan | […]