我有一个带有 6GB RAM 的小型 VPS,用于托管几个网站。
最近我注意到我的缓存内存大小相当高 - 见下文:
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.2%hi, 0.4%si, 0.0%st
Mem: 6113256k total, 5949620k used, 163636k free, 398584k buffers
Swap: 1048564k total, 104k used, 1048460k free, 3586468k cached
Run Code Online (Sandbox Code Playgroud)
在调查是否有某种方法可以将其刷新或清除后,我偶然发现了一个命令:
sync; echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
我读到将它添加到 chron-task/job 可能很有用。这种方法是推荐的还是会导致潜在的问题?
我唯一担心的是我在 Memcached 上使用了一个 Magento 安装 - 这会对它产生任何负面影响吗?
我当然不是专业人士,因此我非常感谢一些专家的建议。
PS:我的 VPS 在 CentOS 5 x64 上运行,并且我安装了 WHM + NGINX。
我已将 Huge Pages 配置为与 Java 一起使用,尽管我对 /proc/meminfo 中的记帐有疑问,但它似乎运行良好。为了显示
# grep HugePages /proc/meminfo
AnonHugePages: 274432 kB
HugePages_Total: 1008
HugePages_Free: 596
HugePages_Rsvd: 594
HugePages_Surp: 0
Run Code Online (Sandbox Code Playgroud)
我的问题涉及“免费”和“Rsvd”数字 - 为什么它们加起来不等于 1008 的“总数”?它们实际上加起来是 1190。我在这里不明白什么?
是否可以在 HP Proliant DL385 g5 中使用非 ECC 内存,服务器是测试系统,因此错误检查不太重要
Windows 2008 和 2012 服务器版本的最小内存使用量是多少?
我指的是所有与操作系统相关的事情。这台机器将是一个带有专用网络服务器软件的虚拟机,它不依赖于操作系统(即没有 IIS,没有域,最小的本地数据库)并且不会使用太多内存(小于 50 MB),尽管 CPU在负载下使用率可能偶尔会激增。
我之所以这么问是因为有一些托管选项可以按 MB 的 RAM 收费,而对于这样一个低开销的服务器,所有的 RAM 使用量基本上都将由空闲的操作系统服务使用。所以任何可以降低基线成本的东西都会很棒。
2008 是低内存使用率的更好起点吗?2012年的会被压低吗?
以上有什么指点吗?
PS:通过停止所有不必要的服务、禁用 COMPort、软盘和 CDROM 设备,以及使用 SetSystemFileCacheSize() API 最小化缓存文件大小,我已经设法在没有 RDP 会话处于活动状态时将标准 Windows 2008 的物理大小降低到 192 MB。
windows windows-server-2008 memory memory-usage windows-server-2012
我想做什么
服务器资源限制有时会很紧张;为了防止内存耗尽,我不得不限制服务器进程。我需要一点专家的帮助来知道我是否在正确的轨道上,并且可能会发现任何明显的设置更改,以帮助系统以更高的稳定性运行更多。
历史
最近我的公司从共享主机升级到了 VPS。基本上我们已经超出了我们的共享主机,并且由于周末 CPU 使用率过高,主机暂停了我们的网站,因此开始出现问题。我们的网站用户倾向于每周在周五和周六增加一倍或三倍,这在我们的案例中并不意外。(一周内每天约 5000 次访问 [~2500 名访客],周末约 9500 次访问 [~4500 名访客]。)
现在我们在 VPS 上,我们没有 CPU 问题。(事实上,CentOS WHM 控制面板说我们处于“.000201% CPU 负载”。)但是,我们遇到了内存不足问题,导致崩溃。
问题概要
我们的网站是基于 WordPress 的。然而,除了评论,几乎没有“写”活动;大多数用户只是看到我们创建的相当静态的页面。
几个月前,也就是 2012 年 10 月,当我们第一次升级到 VPS 时,该网站在一周内运行良好,但每个周末都被内存阻塞。通常它会反复崩溃(24 小时内有 5-20 次,偶尔发生),通常从周五晚上开始,一直持续到周六下午。
在一周内,服务器始终以 65-90% 的内存使用率运行,而在周末它会达到 100%,从而导致崩溃。
采取的纠正措施
由于我是 VPS 的新手,所以我从所有默认设置开始。后来我开始调整,遵循我在本网站和其他网站上阅读的有关解决内存问题的建议。
我对 MySQL、PHP 和 Apache 进行了调整,在“当前配置”中总结如下。我还重新编译了 Apache 和 PHP 以删除不需要的模块。我为 WordPress (W3T) 安装了一个更好的缓存插件,并添加了 APC 操作码缓存。我也开始使用 gz 压缩,并将大量静态文件移动到单独的子域。
我编写了一个漂亮的小脚本来按计划检查服务器状态,并根据需要重新启动它,它还向我发送了服务器错误日志的副本,以帮助进行故障排除。(我知道,如果那样的话,这只是创可贴。但保持网站在线很重要,因为没有人愿意在周末坐下来监视它。)
就在最近,大约一周前(2013 年 1 月),我将服务器 RAM 从 1 GB(2 GB 突发)升级到 2 GB(3 GB 突发)。这似乎解决了大部分问题,但我仍然偶尔会收到服务器挂起的通知(大约一周一次),以及“无法应用进程槽”PHP 错误。
当前配置
它是一个 …
I am having some troubles with CPU loading an memory with Apache Web Server.
We are running a Ubuntu Server 12.04 LTS on a Virtual Machine. Our server have the following specs:
We configured the server to run a Drupal (7.23) based website. So, we installed Apache, PHP, MySQL... The versions are below:
我们有一个 Windows Server 2008 R2(64 位)8GB 服务器,根据 Sysinternals RAMMap,使用 AWE 分配了 2GB 内存。据我了解,这意味着这些页面保留在物理内存中,永远不会被推出。这会导致其他应用程序被推出物理内存。
在 RAMMap 的 Physical Pages 选项卡上,所有 AWE 页面的 Process 列都为空。
我们在那个盒子上运行 SQL Server,但是(通过 SQL Server Management Studio,在服务器属性 -> 内存,在服务器内存选项下)它说配置为不使用 AWE。
但是,当停止SQL Server 时,AWE 页面突然消失了。所以它确实是罪魁祸首。
所以我有三个问题:
我刚刚将我所有的网站都移到了具有 4GB RAM 的新服务器上。几乎立即,mysql 开始崩溃,并且有一次没有重新启动,这导致了一次重大中断(因为我没有注意到,直到有人向我指出)。
这是删除 CRON 作业的日志:http : //pastebin.com/9SAUBcFp(apache2 调用了 oom-killer、内存不足错误等)
在没有df -h超过4%的使用率。
这是 free -m 的输出
total used free shared buffers cached
Mem: 4002 2090 1911 0 168 1015
-/+ buffers/cache: 906 3095
Swap: 255 8 247
Run Code Online (Sandbox Code Playgroud)
这是 mysqlreport 的输出
__ Key _________________________________________________________________
Buffer used 849.00k of 16.00M %Used: 5.18
Current 2.99M %Usage: 18.71
Write hit 44.87%
Read hit 98.84%
__ Questions ___________________________________________________________
Total 198.55k 33.8/s
QC Hits 147.94k 25.1/s %Total: 74.51
DMS 31.35k …Run Code Online (Sandbox Code Playgroud) 我运行的服务器刚刚遇到了我以前从未遇到过的错误。它发出几声哔哔声,重新启动,并卡在启动屏幕(BIOS 显示其徽标并开始列出信息的部分)并出现错误:
节点 0:DRAM 不可纠正的 ECC 错误
节点 1:HT 链接同步错误
硬重置后,系统启动正常,但尚未在 edac-util 上报告任何内容。
我的研究告诉我,即使 ECC 内存和系统处于理想状态,仍然可能出现无法纠正的错误,并且可能会在系统的生命周期中的某个时刻发生;一些报告建议至少一年或更早一次。
该服务器运行带有多个 ECC 模块的 CentOS 6.5。我已经在尝试诊断哪个模块引发了错误,以评估这是错误还是不可避免的结果,例如宇宙射线。
我的研究还表明,当系统像这样停止时,日志无处可写,唯一可靠的方法是将系统连接到另一个系统,并通过串行端口写出日志。
除了通常的 edac-util、memtest、压力测试和预防性更换之外,在解决这个错误时还有什么我应该考虑的吗?
我无法在我搜索的任何 CentOS 日志中找到此崩溃的任何记录,这与我的信念一致,即无法将此错误记录到本地磁盘。该错误仅在自动重启后由 bios 报告给我。是否建议始终将系统日志写入串行以记录这些类型的错误?
使用单个系统可以避免这种故障,还是只能使用昂贵的企业解决方案才能避免?
在这些故障情况下,我可以做些什么来为单个生产服务器提供回退措施;例如,生产服务器本身不会跨越多台机器,但可以存在后备服务器。
我已经阅读了很多帖子和手册,试图找出如何在 Ubuntu 上增加 MySQL 5.6 中的内存,其中说有 3 种方法:
我假设 2 和 3 会在 MySQL 重新启动时丢失,剩下 1。
问题是,我的 /etc/mysql/my.conf 中没有这样的设置。
conf 文件中不存在字符串“inno”,“buffer_size”或“buffer-size”也不存在(但“key_buffer”在那里)。
我通过以下方式安装它:
# apt-get install mysql-server-5.6
Run Code Online (Sandbox Code Playgroud)
我可以改变价值的任何想法?
我是否以某种方式在没有 InnoDB 引擎的情况下安装了 MySQL?
我在看错误的文件吗?
/etc/mysql 下还有一些其他的 .cnf 文件,但它们也没有 innodb 之类的东西。
mysql> show variables like 'inno%'
:
innodb_buffer_pool_size | 134217728 |
Run Code Online (Sandbox Code Playgroud)
所以看起来 InnoDB 已安装,我只是找不到它的配置文件在哪里。
任何帮助表示赞赏。
memory ×10
linux ×3
mysql ×3
apache-2.2 ×2
centos ×2
performance ×2
windows ×2
buffer ×1
centos5 ×1
ecc ×1
hardware ×1
hp ×1
hp-proliant ×1
innodb ×1
java ×1
memory-usage ×1
oom-killer ×1
optimization ×1
php ×1
php5 ×1
redundancy ×1
sql-server ×1
ubuntu ×1
vps ×1