这是一个提议的关于服务器内存的规范问题。
我必须购买戴尔 R420 服务器,并且有各种组合(1600 和 1333 MHz RDIMMS 和 UDIMMS)以及性能优化与高级 ECC 的对比,无论是否有备用。我注意到只有 4gb 的 DIMM 带有 UDIMM,所以我最终只能使用 16GB 的 RDIMM。
这些选项是什么,我需要了解哪些信息?
我有一个具有 8GB 内存的网络服务器,并且正在运行一个非常密集的 php 站点(1 个站点),该站点可以进行文件操作、绘图、电子邮件、论坛,等等。环境远非静态,这让我相信在 ram 中缓存任何东西几乎没有什么好处,因为几乎每个对服务器的请求都会创建新的或更新的页面。很多缓存是在客户端完成的,所以当涉及到图像、javascript、css 时,我们有大量的 304 请求。
此外,我确实有语言文件被写入服务器上的平面文件,其中缓存的 ram 绝对是好的,而不是从磁盘读取。但是这样的文件屈指可数。
在大约两周内,我从拥有 98% 的空闲内存变成了 4% 的空闲内存。这发生在我们还将几个大型 svn 更新推送到服务器的时候。
我的问题是,如果我使用以下命令定期清除缓存(我知道 Linus Torvalds 对缓存的感觉),我的服务器是否会得到更好的调整:
sync; echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
或者我最好编辑以下文件:
/proc/sys/vm/swappiness
Run Code Online (Sandbox Code Playgroud)
如果我用 30 替换默认值 60,我应该有更少的交换和更多的陈旧缓存重用。
看到使用第一个命令释放所有缓存确实感觉很好,但如果我告诉你这对桌面环境有好处,那我就是在骗你。但是像我上面描述的那样的网络服务器呢?想法?
编辑:我知道系统将根据需要从缓存中获取内存,但感谢您指出我们的清晰。当大部分服务器内存存储在缓存中时 Apache 会变慢,我是否在想象事情?那是完全不同的问题吗?
我注意到 Apache 在我的 LAMP 服务器(ubuntu 10.10)上运行多个进程。我只是在运行一个使用 MySQL 作为数据库的 Wordpress 站点。似乎 www-data 运行 apache2 的次数比它应该多(也使用太多内存),我是否正确:
ID Owner Size Command
31200 www-data 251236 kB /usr/sbin/apache2 -k start
20678 www-data 250948 kB /usr/sbin/apache2 -k start
25781 www-data 248888 kB /usr/sbin/apache2 -k start
31045 www-data 248844 kB /usr/sbin/apache2 -k start
19926 www-data 246480 kB /usr/sbin/apache2 -k start
20749 www-data 239380 kB /usr/sbin/apache2 -k start
32616 www-data 238632 kB /usr/sbin/apache2 -k start
8846 mysql 238128 kB /usr/sbin/mysqld
24178 www-data 234228 kB /usr/sbin/apache2 -k start
32618 …Run Code Online (Sandbox Code Playgroud) 我们正在运行一个执行财务建模的大型 Drupal 网站。考虑到 apache 使用的内存超时增加而 apache 进程数保持稳定,我们似乎遇到了某种内存泄漏:


我们知道内存问题来自 apache/PHP,因为每当我们发出/etc/init.d/httpd reload内存使用量下降(见上面的截图和下面的 CLI 输出):
在 httpd 重新加载之前
美元免费
缓存的已用空闲共享缓冲区总数
内存:49447692 45926468 3521224 0 191100 22609728
-/+ 缓冲区/缓存:23125640 26322052
掉期:2097144 536552 1560592
httpd重新加载后
美元免费
缓存的已用空闲共享缓冲区总数
电话:49447692 28905752 20541940 0 191360 22598428
-/+ 缓冲区/缓存:6115964 43331728
掉期:2097144 536552 1560592
每个 apache 线程都分配了一个memory_limit512MB的 PHP ,这解释了高内存使用量与低请求量的区别,以及max_execution_time120 秒的时间,它应该终止执行时间更长的线程,因此应该防止内存使用量的不断增长。看到。
问:我们如何调查导致此内存泄漏的原因?
理想情况下,我正在寻找可以在系统上执行的故障排除步骤,而不必打扰开发团队。
附加信息:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
Run Code Online (Sandbox Code Playgroud)
仅供参考,我们知道我们正在单独调查的交换问题,与我们在交换开始发生之前观察到的内存泄漏无关。
我知道它的作用...我想我很好奇它为什么要解决我继承的应用程序中的问题。我接管了一个相当大的 tomcat 应用程序,它充当一堆 flex 客户端的 Red5 服务器,并处理大量实时交互数据,这些数据最终被刷新到 rails api。问题是随着时间的推移,这些客户端的响应在大量负载下增长到 3-400 毫秒,而通常小于 100 毫秒。客户怀疑这是我们真的无法确认的内存问题。有一天,我正在运行负载测试的临时服务器基本上停止接收请求或非常慢。一时兴起我发送了
sync && echo 3 > /proc/sys/vm/drop_caches
神奇的是,服务器恢复了活力并开始全速运行,为这些连接提供服务。这是巧合还是这种行为有意义?为什么?
这是一台 Ubuntu 9.10 服务器。
另外如何查看每个进程的内存使用情况?
谢谢
我管理着大约 90 个 SQL Server 实例,需要查询来确定分配给每个实例的内存量。请注意,我不是在问如何设置它,只是为了在不使用 Management Studio 的情况下查看它当前的设置。
谢谢你的帮助。
我看到很多关于这个的问题,但我的似乎有点不同。
这是我收到的:
/etc/cron.weekly/apt-xapian-index:
FATAL -> Failed to fork.
run-parts: /etc/cron.weekly/apt-xapian-index exited with return code 100
Run Code Online (Sandbox Code Playgroud)
和
/etc/cron.daily/apt:
FATAL -> Failed to fork.
Run Code Online (Sandbox Code Playgroud)
和
/etc/cron.daily/apt:
DB Update failed, database locked
Run Code Online (Sandbox Code Playgroud)
我总是有至少 600 MB 的可用 RAM。如果我尝试手动运行sudo /etc/cron.daily/apt什么也不会发生..shell 挂起。
可能是什么问题呢?
编辑: Ubuntu 服务器 14.04
自从更换处理器后,我更新了这篇文章,但我的问题的核心(不幸的是结果也是如此)是相同的。
我构建了我的第一个 FreeNAS 盒子,并想使用 ECC RAM,因为我想存储关键数据。因为我的预算有限,所以我想寻找仍然支持 ECC RAM 的最实惠的解决方案。
经过一番研究,我发现我需要一个支持 ECC 的主板、内存和 CPU。我选择的主板是“Gigabyte X150M-Pro ECC”,它有 C232 芯片组、DDR4 和 LGA1151 插槽。
我还购买了由金士顿制造的两个 DIMM 套件,型号为“KVR21E15S8K2/8”(规格表)。技嘉发布了一份经过测试的内存模块列表,我的模块似乎支持工作 ECC(支持模块列表)。
由于我的预算有限,我需要一个支持 ECC 的经济实惠的 Skylake CPU。根据英特尔的说法,赛扬 G3900 确实支持 ECC,所以我选择了那个。
构建计算机后,我想验证我的系统是否确实使用 ECC 内存运行并进入了主板的 BIOS。从各种互联网站点,我发现有些主板有一个特殊部分,可以告诉 ECC 是否正常工作,但我的主板似乎没有。我检查了所有菜单,但找不到类似的部分。
在做了更多的研究之后,在 Unix&Linux stackexchange 上找到了一篇没有解决我的问题的帖子。我尝试了最新的memtest86+,据我所知,它甚至没有显示值“ECC”。我尝试了Puget 系统使用的较旧的 4.20 版本,该版本显示“ECC:关闭”。然而,在阅读了前面提到的帖子后,我怀疑它说的是实话(也许这就是该功能被删除的原因?)。两个版本也没有读出 DIMM 的正确速度和延迟,这增加了我对memtest86+.
另一种确定 ECC 是否正常工作的流行方法是发出dmidecode -t memory命令并读出Total Width和Data Width。我的结果分别是 …
如果 E3-1285 v6 支持最大 64 GB RAM,使用双插槽主板是否会增加最大内存?我猜不是,但想知道原因。我的逻辑是,如果 RAM 是共享的,那么两个处理器都应该能够处理所有可用的 RAM,因此,它也将被限制为 64GB。对此有任何技术解释吗?
memory ×10
linux ×3
apache-2.2 ×2
ecc ×2
ubuntu ×2
apt ×1
cache ×1
cron ×1
cron.daily ×1
drupal ×1
fork ×1
freebsd ×1
freenas ×1
hardware ×1
performance ×1
php ×1
process ×1
sql ×1
sql-server ×1
swapping ×1
threads ×1
tsql ×1
web-server ×1
xeon ×1