尝试yum install php56w-mcrypt
和系统给了我这个错误
libmcrypt-2.5.8-13.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
php56w-mcrypt-5.6.5-1.w7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)
我检查了 free -m
total used free shared buffers cached
Mem: 490 421 68 8 3 42
-/+ buffers/cache: 376 113
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9756 mysql 20 0 727588 81556 0 S 0.3 16.2 1:04.61 mysqld
11089 root 20 0 0 0 0 S 0.3 0.0 0:16.25 kworker/0:2
1 root 20 0 129396 2020 576 S 0.0 0.4 0:05.88 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:01.82 rcu_sched
11 root 20 0 0 0 0 R 0.0 0.0 0:02.10 rcuos/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.91 watchdog/0
13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
Run Code Online (Sandbox Code Playgroud)
不知道还有什么地方可以检查。
我正在使用DigitalOcean
VPS 和 RAM 512MB,每月 5 美元的计划。
小智 19
您可以创建交换文件:
fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
Run Code Online (Sandbox Code Playgroud)
这将创建交换文件,您将能够安装应用程序。删除交换文件:
swapoff -a
rm -f /swapfile
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Arch wiki。
Gia*_*968 12
这个问题是服务器的机器上似乎只有 490MB 的 RAM,而您使用了 421MB。仅剩 68MB 可用空间;对于任何系统来说,这都不是很多内存。
查看输出top
结果表明 MySQL (aka:)mysqld
是罪魁祸首。
如果这是临时情况,您可以做的最好的事情就是像这样简单地停止 MySQL:
sudo service mysqld stop
Run Code Online (Sandbox Code Playgroud)
然后在 MySQL 停止的情况下,您可以yum install
按预期运行。
但另一种解决方案是使用“MySQL Tuning Primer”之类的脚本来帮助评估服务器上的 MySQL 使用情况和配置并进行相应调整。原因是开箱即用的普通 MySQL 会占用大量内存。但是“MySQL Tuning Primer”将帮助评估您的安装并让您知道可以调整的内容。包括降低内存要求,以便设置可以满足您有限的资源。唯一的问题是 MySQL 需要连续运行至少 48 小时,才能使“MySQL Tuning Primer”结果有价值。除此之外,使用此脚本调整 MySQL 的性能是微调 LAMP 设置的好方法。
此外,由于您正在运行 Apache,您可能可以降低 Apache(又名httpd
)的 RAM 要求,这样您就可以释放更多 RAM。这是针对 Apache 基本开发环境的一组相当通用的调整,但应该对您有所帮助。首先通过你最喜欢的命令行编辑器打开你的 Apache 配置;我更喜欢nano
但任何文本编辑器都很好:
sudo nano /etc/httpd/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)
现在找到 a 所说的行Timeout
并将其更改为“120”;两分钟是一个合理的超时窗口:
Timeout 120
Run Code Online (Sandbox Code Playgroud)
同样找到MaxKeepAliveRequests
并将其更改为“24”;“保持活动”连接很好,但不要让它们压倒您的设置:
MaxKeepAliveRequests 24
Run Code Online (Sandbox Code Playgroud)
并找到KeepAliveTimeout
并将其设置为“2”;这应该与您网站上一页的加载速度和 2 秒的平均速度有关:
KeepAliveTimeout 2
Run Code Online (Sandbox Code Playgroud)
现在查找设置为的 XML 配置指令<IfModule mpm_prefork_module>
:
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 16
MaxSpareServers 32
ServerLimit 40
MaxClients 40
MaxRequestsPerChild 2000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这个的关键是ServerLimit
和MaxClients
。默认情况下,Apache 的设置相当高;255 因为MaxClients
我相信。但现实情况是,即使是高流量站点每秒也只能获得 70-80 个连接……然后死亡……这意味着 Apache 连接是无状态的,因此基准是每秒连接数。因此,对于开发或小型服务器,“40”是一个不错的数字。
现在完成了这些关键调整,像这样重新启动 Apache:
sudo service httpd restart
Run Code Online (Sandbox Code Playgroud)
通过将 MySQL 和 Apache 调整为比默认/预设值更合理的设置,可以释放服务器上的资源并使一切运行更顺畅。
归档时间: |
|
查看次数: |
23713 次 |
最近记录: |