小编rvs*_*rvs的帖子

node.js, mongodb, redis, on ubuntu 在生产中性能下降,RAM 空闲,CPU 100%

正如问题标题所暗示的那样,我很难弄清楚可以在我的应用程序上进行哪些改进(或在 os、ubuntu 中进行调整)以达到可接受的性能。但首先我将解释架构:

前端服务器是一台运行 Ubuntu 12.04 的 8 核机器,具有 8 个演出内存。该应用程序完全用 javascript 编写并在 node.js v 0.8.22 中运行(因为某些模块似乎在较新版本的节点上抱怨)我使用 nginx 1.4 将 http 流量从端口 80 和 443 代理到被管理的 8 个节点工作器并开始使用节点集群 api。我使用最新版本的 socket.io 0.9.14 来处理 websocket 连接,我只启用了 websockets 和 xhr-polling 作为可用传输。在这台机器上,我还运行了一个 Redis(2.2) 实例

我将持久数据(如用户和分数)存储在 mongodb(3.6) 上的第二台服务器上,具有 4gigs RAM 和 2 个内核。

该应用程序从几个月开始就投入生产(直到几周前它一直在一个机器上运行)并且每天有大约 18,000 名用户使用它。除了一个主要问题:性能下降之外,它一直工作得很好。随着使用,每个进程使用的 cpu 量会增加,直到它达到工作人员(不再为请求提供服务)为止。我暂时解决了它每分钟检查每个工人正在使用的cpu,如果达到98%则重新启动它。所以这里的问题主要是cpu,而不是RAM。RAM不再是问题,因为我已经更新到socket.io 0.9.14(早期版本正在泄漏内存)所以我怀疑这是一个内存泄漏问题,特别是因为现在它是cpu增长相当快(我必须每天重启每个工人大约 10-12 次!)。老实说,正在使用的 RAM 也在增长,但是很慢,每使用 2-3 天 1 gig,奇怪的是,即使我完全重新启动整个应用程序,它也没有发布。只有在我重新启动服务器时才会释放它!这我真的无法理解......

我现在发现nodefly很棒,所以我终于可以看到我的生产服务器上发生了什么,并且我从几天开始收集数据。如果有人想查看图表,我可以让您访问,但基本上我可以看到我有 80 到 200 个并发连接!我期待 node.js 处理数千个请求,而不是数百个请求。此外,http 流量的平均响应时间在 500 到 1500 毫秒之间浮动,我认为这确实很多。此外,在这个有 1300 个用户在线的时刻,这是“ss -s”的输出:

Total: …
Run Code Online (Sandbox Code Playgroud)

ubuntu nginx node.js mongodb redis

12
推荐指数
1
解决办法
7190
查看次数

rpm 规范:基于发行版的条件要求

我正在尝试为 RHEL/CentOS/SL 5 和 6 编写单个 rpm 规范。此规范适用于 python 应用程序,因此构建过程没有区别。但是在 RHEL/CentOS5 上,我需要添加一个额外的依赖项。

我将如何仅为 el5 定义依赖项?我试过以下:

%if 0%{?redhat} == 5 || 0%{?centos} == 5
Requires:   kmod-coretemp
%endif
Run Code Online (Sandbox Code Playgroud)

不起作用(在 CentOS5 上构建不会添加 kmod-coretemp 依赖项)。

我也试过以下:

%if %{?dist} == "el5"
Run Code Online (Sandbox Code Playgroud)

它报告语法错误。我确定 dist 宏已设置并包含“el5”。但我不确定 rpm 中 if 条件的语法是什么?rpmguide 没有详细的答案。

redhat rpm centos5

8
推荐指数
2
解决办法
2万
查看次数

在 puppet 中定义硬链接

有没有办法在木偶清单中定义硬链接?

似乎文件类型只能定义符号链接,但我需要它是硬链接才能使我的一些 chroot 应用程序工作。例如,我需要硬链接

/etc/hosts -> $chroot/etc/hosts
/etc/resolvf.com -> $chroot/etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

等等。

存档的最简单方法是什么?

更新:谢谢,我已经结束了以下定义:

define hardlinkdir(source=$name, target) {                                                                                                                   
    exec {                                                                                                                                                   
        "hardlinkdir-$name":                                                                                                                                 
            command => "cp -r --link $target $source",                                                                                                       
            path    => "/usr/bin:/bin",                                                                                                                      
            creates => $source;                                                                                                                              
    }                                                                                                                                                        
}                                                                                                                                                            

define hardlink(source=$name, target) {                                                                                                                      
    exec {                                                                                                                                                   
        "hardlink-$name":                                                                                                                                    
            command => "ln --force $target $source",                                                                                                         
            path    => "/usr/bin:/bin",                                                                                                                      
            unless  => "test $source -ef $target";                                                                                                           
    }                                                                                                                                                        
}
Run Code Online (Sandbox Code Playgroud)

当然,它们并不完美,但它们可以胜任,这是我需要的一切。

感谢您的帮助!

chroot puppet

3
推荐指数
1
解决办法
2166
查看次数

无法连接到 ec2 实例

我基于 php cloudformatino 映像 ami-6fc2f61b 创建了一个新的 ec2 实例,并将我现有的密钥附加到它。安全组允许 ssh 和 http。但是,我无法连接:

$ ssh -v -i /cygdrive/c/data/copy/pk.pem ec2_user@host
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Connecting to host [46.xx.xx.xx] port 22.
debug1: Connection established.
debug1: identity file /cygdrive/c/data/copy/pk.pem type -1
debug1: identity file /cygdrive/c/data/copy/pk.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client …
Run Code Online (Sandbox Code Playgroud)

ssh amazon-ec2

2
推荐指数
1
解决办法
1138
查看次数

在 sshfs 和谷歌云中使用 arcfour 密码

我想在使用 sshfs 安装驱动器时使用 arcfour 密码。但是,如果我指定sshfs -o Ciphers=arcfour我的虚拟机重置连接(我可以在没有此选项的情况下进行 sshfs)。有什么办法可以使这项工作?我这样做是为了让 sshfs 执行得更快(我也关闭了压缩)。

ssh sshfs

2
推荐指数
1
解决办法
1122
查看次数

如何在redhat中启用ipv6

我已经在 RHEL 中安装了带有 ipv6 支持版本 2.9.0.2 IPv6 (Build 92) 的 snort。谁能告诉我如何在我尝试过的 linux 中启用 ipv6 支持

sysctl -w net.ipv6.conf.all.forwarding=1
Run Code Online (Sandbox Code Playgroud)

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
Run Code Online (Sandbox Code Playgroud)

并重新启动了服务网络,但仍然出现错误

Bringing up interface eth0:  Global IPv6 forwarding is enabled in configuration
, but not currently enabled in kernel.
Run Code Online (Sandbox Code Playgroud)

然后我添加net.ipv6.conf.all.forwarding=1.etc/sysctl.conf ,然后现在重新启动我没有看到上面的错误消息,但我没有看到来自 ipv6 的转发

任何人都可以请帮忙

networking redhat ipv6

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

redhat ×2

ssh ×2

amazon-ec2 ×1

centos5 ×1

chroot ×1

ipv6 ×1

mongodb ×1

networking ×1

nginx ×1

node.js ×1

puppet ×1

redis ×1

rpm ×1

sshfs ×1

ubuntu ×1