我们正在 Unicorn 下运行 Ruby on Rails 网络应用程序。我们的应用程序不受 CPU 限制(我们有一个双 Xeon E5645 系统,带有 12 个内核,峰值负载平均值约为 6)。我们最初有 40 个 Unicorn 工作人员,但随着时间的推移,应用程序内存占用量增加。所以,现在我们必须减少工作进程的数量。我认为标准(CPU 内核数 + 1)公式也适用于 Unicorn,但我的同事试图说服我我们应该为每个 CPU 保留更多 Unicorn 实例并提供此链接。然而,我不确定为什么我们需要在空闲的 Unicorn 进程上花费这么多内存。
我的问题是:每个 CPU 内核有多个 Unicorn 实例的原因是什么?是因为 Unicorn 的一些建筑特性吗?我知道忙碌的 Unicorn 进程无法接受新连接(顺便说一句,我们使用 UNIX 域套接字与 Unicorn 实例进行通信),但我认为引入 backlog 正是为了解决这个问题。无论如何,是否有可能克服每个 CPU 规则的 2 到 8 个 Unicorn 实例?
这本书“的HBase权威指南”指出,
不建议在单个服务器上安装不同的文件系统。这可能会对性能产生不利影响,因为内核可能必须拆分缓冲区缓存以支持不同的文件系统。据报道,对于某些操作系统,这可能会对性能产生破坏性影响。
这真的适用于Linux吗?我从未见过超过 300 MB 的缓冲区缓存,而且大多数现代服务器都有千兆字节的 RAM,因此在不同文件系统之间拆分缓冲区缓存应该不是问题。我还缺少其他东西吗?
我的系统是 CentOS 6 x86_64,根分区格式为 ext4。
df报告大约 3Gb 为已用空间:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md1 20158260 3433724 15700540 18% /
Run Code Online (Sandbox Code Playgroud)
但du -sm -x /声称实际使用的 Gb 少于一个 Gb:
[root@xxxx ~]# du -sm -x /
948 /
Run Code Online (Sandbox Code Playgroud)
我想知道这里发生了什么。重新启动后使用数量立即更改。文件系统声称它是干净的,日志中没有错误。我发现了这个,但它没有解释问题的根源。我应该重新格式化分区吗?有没有办法追踪这种额外的使用情况?
我还执行了以下操作以检查du在非空挂载点上的挂载没有隐藏任何数据:
[root@xxxx ~]# mount -o bind / /mnt/root
[root@xxxx ~]# du -sm /mnt/root/
949 /mnt/root/
[root@xxxx ~]#
Run Code Online (Sandbox Code Playgroud)
不,这不是我的情况。
我们在 FreeBSD 10.0-CURRENT 主机上有一个 100G ZVOL,它声称使用了 176G 的磁盘空间:
root@storage01:~ # zfs get all zroot/DATA/vtest
NAME PROPERTY VALUE SOURCE
zroot/DATA/vtest type volume -
zroot/DATA/vtest creation Fri May 24 20:44 2013 -
zroot/DATA/vtest used 176G -
zroot/DATA/vtest available 10.4T -
zroot/DATA/vtest referenced 176G -
zroot/DATA/vtest compressratio 1.00x -
zroot/DATA/vtest reservation none default
zroot/DATA/vtest volsize 100G local
zroot/DATA/vtest volblocksize 8K -
zroot/DATA/vtest checksum fletcher4 inherited from zroot
zroot/DATA/vtest compression off default
zroot/DATA/vtest readonly off default
zroot/DATA/vtest copies 1 default
zroot/DATA/vtest refreservation none local …Run Code Online (Sandbox Code Playgroud) 我有一台带有 48G RAM 的全新服务器,我将把它用作数据库服务器。我不希望磁盘读取出现问题,但我绝对希望针对写入密集型负载模式进行优化。
操作系统是 RHEL 5.6,FS 是 ext3,我已经在 /etc/fstab 中添加了“noatime”和“data=writeback”,后一个选项有助于大大减少 LA。我的下一个目标是尽可能优化 pdflush 过程。我尝试应用这里提到的调整,但无济于事。可能这些信息已经过时了。
我还有哪些选择?我应该继续试验 pdflush 还是保持原样更好?我倾向于降低dirty_ratio和dirty_background_ratiosysctl 值以增加 I/O 平滑度,但这些值似乎与性能无关,压力测试下 Munin 中的负载模式基本相同。
我还应该尝试不同的 I/O 调度程序吗?在写入密集型设置中拥有大量 RAM 是否能让我受益?我知道磁盘 I/O 速度和延迟与 RAM 无关,但我的目标不是神奇地更快地写入磁盘,而是提高系统稳定性并实现某种优雅的降级。
假设我有良好的备份,并且可以接受进一步的数据一致性权衡,例如“data=writeback”。
谢谢你。
我们使用类似的命令远程运行一个简单的部署脚本ssh deployer@10.170.4.11 sudo /root/run-chef-client.sh。它今天开始挂起,因为在完成后一直在sshd等待。我们从调试模式开始,得到两种不同类型的日志。以下是会话未挂起时的正常日志:10.170.4.11sudosshd
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 23187
debug1: session_exit_message: session 0 channel 0 pid 23187
debug1: session_exit_message: release channel 0
Received disconnect from 10.170.4.6: 11: disconnected by user
Run Code Online (Sandbox Code Playgroud)
当它挂起时,我们得到以下信息:
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 24209
debug1: session_exit_message: session 0 channel 0 pid 24209
debug1: session_exit_message: release channel 0
Run Code Online (Sandbox Code Playgroud)
我们的理解是服务器进程等待来自客户端的一些通信并且永远不会得到它。很难判断是客户端问题还是服务器端问题。我们尝试sshd在下运行strace但没有成功,因为在sudo这种情况下忽略了 SUID 位。那么,我们还应该尝试调试/防止这种情况吗?
我们有一个基于 FreeIPA 的系统,管理员的密码已过期,需要更改,但通过 SSH 的标准密码更改程序失败:
sashka@cellar ~ ssh admin@ipa.xxxxxxxxxx.com
admin@ipa.xxxxxxxxxx.com's password:
Password expired. Change your password now.
Last failed login: Mon Jun 30 15:38:21 MSK 2014 from 116.10.191.195 on ssh:notty
There were 6071 failed login attempts since the last successful login.
Last login: Wed Apr 16 19:28:54 2014
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user admin.
Current Password:
New password:
Retype new password:
Password change failed. Server message: Current …Run Code Online (Sandbox Code Playgroud) 我使用来自 Dotdeb 存储库的 Debian 6.0.3 x86_64 和 MySQL 5.5.20-1~dotdeb.0-log。根据此图,MySQL 进程在几个小时前开始消耗大量“sy”CPU 时间。我无法连接到正在运行的mysqld进程,不得不杀死它。我在日志中没有发现任何有用的东西。我的设置似乎很常见(我假设 Dotdeb 只是重新分发库存的 MySQL 版本)而且我以前从未见过这样的事情。这可能的根本原因是什么?我如何才能防止将来出现这种情况?
我们的 SMTP 提供商要求在四个不同的主机之间平均分配电子邮件。我知道分发这种负载的标准方法是利用 DNS 循环功能,但问题是应该使用符号名称而不是 IP 来寻址提供商的邮件服务器。处理这个问题的最佳方法是什么?设置多个 CNAME 记录是否有效,还是应该使用任何内部 Sendmail/Postfix/Exim/etc 平衡功能(我目前不知道)?