我正在尝试管理 Amazon 上的服务器,用于每月接收约 1 亿次综合浏览量的网站网络。不幸的是,我的 5 名开发人员团队中没有人拥有丰富的服务器管理经验。
现在我们将 MaxClients 设置为 1400。目前我们的流量大约是平均水平,我们总共有 1150 个 Apache 进程在运行,每个进程使用大约 2% 的 CPU!在这 1150 个中,有 800 个当前正在休眠,但仍在占用 CPU。我相信有办法优化这个。我有几个想法:
所以,这是我们的 Apache 设置。我们确实计划尽快与服务器管理员签约,但在我们找到某人之前,我真的很感激一些建议。
Timeout 25
KeepAlive Off
MaxKeepAliveRequests 200
KeepAliveTimeout 5
<IfModule prefork.c>
StartServers 100
MinSpareServers 20
MaxSpareServers 50
ServerLimit 1400
MaxClients 1400
MaxRequestsPerChild 5000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 400
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Run Code Online (Sandbox Code Playgroud)
全顶输出:
top - 23:44:36 up 1 …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多这个网站来优化我的服务器,但没有什么能真正帮助我:( 我认为我有记忆问题,我只有一个网站(Drupal)有 860K 的页面浏览量,但是当流量增加时,负载平均上升超过 +40、+70 等,100% 的内存使用导致服务器完全关闭
实际上,当我刚刚重新启动服务器时,总内存使用量约为 80%
Processor #1 to #24
Intel Dual Xeon E5645 @ 2.40GHz
Cache 12288 KB
4GB Total RAM
Apache/2.2.19 -prefork- (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 PHP/5.2.17
500GB HD RAID 1
Drupal based website with Boost module and Cache Router (INNODB tables)
APC Installed
Run Code Online (Sandbox Code Playgroud)
top - 23:05:37 up 19:42, 1 user, load average: 0.78, 0.74, 0.64
Tasks: 527 total, 1 running, 524 sleeping, 0 stopped, 2 zombie
Cpu(s): …Run Code Online (Sandbox Code Playgroud) 我们希望升级其中一台 IBM System X 服务器中的 RAM。我收到了来自 IBM 的 2x 4GB RAM 芯片报价 560 美元。我查看了来自 Kingston 和 Crucial 的完全相同类型的 RAM(ECC PC2-5600 服务器 RAM),对于相同数量的 RAM,两者的价格都在 200 美元左右。
我有一个奇怪的问题。我主持了一个小型网上商店,这没什么大不了的,也许每天有 20 个访客,每周有几个订单。我可能会扩大一点,但我怀疑它会变得非常大。
无论如何,我的问题是我遇到了一个大约 6gb 内存和 6 核的 VPS,非常便宜。现在我拥有这个 VPS,其功能比我真正需要的要强大得多。
所以现在我的问题。我在它上面运行 CentOS、nginx、php-fpm 和 mysql,它运行得很好,但由于我并不真正需要处理所有的 ram,我怎样才能让我的 VPS 消耗更多的 ram 以使其更快?你能给我一些广泛的建议吗?谢谢!
我正在寻找一种生产解决方案来创建一个可以与 HDD 安全同步的 RAM 驱动器。
我有一个 I/O 负载很重的自定义软件(这是某种专有的面向文档的数据库),我需要显着加快它的速度。我无法修改或摆脱软件本身,因此必须进行水平或垂直缩放。该软件不支持盒子的水平侦察,所以我先看看垂直缩放。
主要想法很简单 - 我们购买大量 RAM (96GB) 并将整个内容放入 RAM 驱动器。但它需要是故障安全的,在服务器重启时丢失任何数据不是一种选择。所以我正在寻找能够在 RAM 驱动器和 HDD 之间保持透明同步的解决方案。
像通过 bash 脚本复制文件这样的肮脏解决方案不是一种选择,需要更可靠的方法。
理论上,正如我所见,这里描述的某种分布式 FS可以以一种奇怪的方式使用 - 在同一台机器上同步两个分区。但我怀疑这是否会在实践中起作用,并且从未尝试过。
那么,对于具有透明同步到 HDD 的 RAM 驱动器的现成解决方案有什么想法吗?
数据更新:
filesystems memory replication ramdisk distributed-filesystems
这些free命令以两种形式提供可用内存量:完全可用内存(Mem行)和用于缓存和缓冲区的一次性内存(-/+ buffers/cache行):
-bash-3.2$ free -m
total used free shared buffers cached
Mem: 16057 15173 884 0 17 2520
-/+ buffers/cache: 12635 3422
Swap: 12287 4937 7350
Run Code Online (Sandbox Code Playgroud)
在此示例中,不包括缓冲区和缓存的可用内存为 884 MB,包括缓冲区和缓存的可用内存为 3422 MB。
如何在 中获得第二个测量值(可用内存,包括缓冲区和缓存)sar?
我有几台运行 centos 64bit 的高内存 linux 服务器,在正常运行 10-20 天后,我注意到在所有这些服务器上,它们实际上并没有使用到那时可用的所有内存(它们在 48gb 系统上都有大约 10gb 的空闲空间,并且在 64gb 系统上免费 20gb。
它们是网络服务器,并且在服务器中有超过 ram 数量的工作数据集(例如活动文件),所以我假设页面缓存会增长到使用所有 ram 的程度,然后页面缓存中的页面会在需要时/如果需要被释放。
例如 :
top - 09:44:46 up 57 days, 9:32, 5 users, load average: 6.44, 6.33, 6.27
Tasks: 680 total, 4 running, 676 sleeping, 0 stopped, 0 zombie
Cpu(s): 17.3%us, 3.3%sy, 0.0%ni, 79.0%id, 0.1%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 49313212k total, 39277524k used, 10035688k free, 1247064k buffers
Swap: 20643832k total, 0k used, 20643832k free, 20592968k cached
Run Code Online (Sandbox Code Playgroud)
显示该服务器已经运行了 57 天,但是有 10GB …
最近,我们的服务器面临内存问题。从几周前开始,我们的服务器加载非常缓慢。访问电子邮件和网站确实花费了太长时间。然后我们要求服务器技术支持为我们重新启动服务器。重启后,一切恢复正常。我们认为是时候升级 RAM 了。最初我们的服务器上只有 2GB RAM,因此我们将其升级为 8GB。
我们以为问题解决了。但是,升级RAM后,内存使用率越来越高。它就像总是达到其最大使用量(例如 7.8 GB 内存中有 456.5 MB 可用)。第二天,服务器完全宕机,我们不得不请求技术支持再次为我们重新启动服务器。每次遇到问题,都得请支持人员帮我们重启服务器。据支持人员介绍,如果他们的 SQL 访问,内存将恢复正常。但如果他们再上一次,内存会再次变高。因此,他们怀疑问题出在 SQL 查询上。
我想问一下,真的是SQL查询出问题吗?或者是硬件问题?如果是SQL,我怎么知道什么样的查询占用了这么大的内存?我该如何检查?我们的服务器正在运行以下详细信息:
OS: Linux 2.6.18
CPU: GenuineIntel, Intel(R)Xeon(R)CPU W3550 @ 3.07GHz
Average Load: 808.18;674.21;587.18
database records: 421,031 with 58 tables
Run Code Online (Sandbox Code Playgroud)
我可以从 PHPMyAdmin 提供的查询统计信息:
select 314 k 11.98 k 66.37%
set option 34 k 1,296.59 7.18%
show fields 19 k 712.00 3.94%
update 16 k 620.61 3.44%
alter table 16 k 610.32 3.38%
change db 15 k 569.08 3.15%
insert 15 k 560.20 3.10%
show …Run Code Online (Sandbox Code Playgroud) 似乎考虑到列出的进程的内存百分比,我的服务器不应达到 98% 的内存使用率。为什么累积内存使用率这么高?
top - 14:34:50 up 14 days, 22:54, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 139 total, 1 running, 138 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32949428 total, 32566440 used, 382988 free, 604072 buffers
KiB Swap: 0 total, 0 used, 0 free. 31047712 cached Mem
-----------------------------------------------------------------------------------
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5897 …Run Code Online (Sandbox Code Playgroud) 大约每周一次,OOM-killer 会在我的服务器中关闭一个 postgres 进程,尽管“免费”状态它有足够的可用内存。
我在这里和那里阅读了几个线程,但看不到任何真正的解释。难道真的是因为服务器现在已经掉呢?它是(Ubuntu)内核错误吗?
并且先发制人,是的,也许我会添加交换。但是就没有其他的解决办法了吗?或者至少解释一下?:)
服务器:物理戴尔 内存:64GB RAM 和 0 Swap uname:Linux 服务器名称 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Postgres 版本:9.5.10(8GB 共享内存) vm.overcommit_memory = 0
free -m在最后一次杀戮之前的输出
可用的免费共享 buff/缓存总数 电话:64312 2666 450 8699 61196 52126 交换:0 0 0
上次杀死的内核日志
6 月 19 日 21:29:49 服务器名称内核:[17009377.877956] bash 调用 oom-killer:gfp_mask=0x26000c0,order=2,oom_score_adj=0 6 月 19 日 21:29:49 服务器名称内核:[17009377.877959] bash cpuset=/ mems_allowed=0-1 6 月 19 日 21:29:49 服务器名称内核:[17009377.877964] CPU:23 PID:61771 通讯:bash 未受污染 4.4.0-62-generic #83-Ubuntu …
memory ×10
linux ×4
apache-2.2 ×2
centos ×2
mysql ×2
drupal ×1
filesystems ×1
httpd ×1
ibm ×1
memory-usage ×1
oom ×1
optimization ×1
performance ×1
postgresql ×1
ramdisk ×1
replication ×1
sar ×1
top ×1