我不是专业的服务器管理员。有一个 ubuntu 服务器,托管一个用于购物的 Wordpress 网站,每天有近 200 名用户访问。
服务器配置为:512 MB 内存,25 GB SSD 我需要建议和指南来减少 apache 和 mysqld 的子进程,并提高服务器速度
我为使服务器稳定所做的一些事情是:* 当内存完全被占用时制作交换文件 * 每 1 小时重新启动 apache 和 MySQL 服务器(使用 cronjob)* 我只使用 Cloudflare,而不是使用专用 DNS 服务器(如 BIND)。
现在我有一些问题:
- 我还有哪些其他选项和方法可以用来减少运行进程或提高服务器速度?
- 一周中有些时候,服务器的 CPU 使用率会达到 100%。但我不知道是什么进程导致了这种情况。我怎样才能记录使用 100% CPU 的进程(这可能吗?)
- 一个常见的问题是 mysqld 和 apache 通常使用这么多子进程吗?
以下是命令的结果free -m
:
total used free shared buff/cache available
Mem: 488 353 12 42 121 57
Swap: 1023 182 841
这是命令的屏幕截图htop
答案1
回答问题 1 和 3 - Apache Web 服务器的工作方式是,它为每个到服务器的连接创建一个新进程。您可以更改 Apache 创建的最大进程数,或者在 Apache 配置文件中查看其当前的最大进程数(请参阅 Apache文档更多信息),这实际上是改变创建进程数量的唯一方法。这就是 Apache 的构建方式。有一种众所周知的 DOS(拒绝服务)攻击利用了这一事实,称为慢蜂。一些其他 Web 服务器(例如 Nginx)不会为到服务器的每个连接创建单独的进程(但这并不一定意味着您会看到使用不同 Web 服务器时 CPU 使用率更低)。
回答问题 2 - 像这样的事情应该可以满足你的要求(来源这里):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done