如何使用 mpm_event 调整 apache

如何使用 mpm_event 调整 apache

关于 apache 调优,网上有很多不错的文档和帖子,例如。如何在 Ubuntu 14.04 服务器上调整 Apache

不幸的是,几乎所有这些都描述了如何使用 mpm_prefork 调整 apache。

据我所知,prefork 方法有点旧,在多线程方面效率低下……无论如何,我的客户坚持使用 mpm_event,他们的主要问题是当访问者数量很少时,他们的 VPS 变得没有响应,我发现问题出在内存上,因为他们的 RAM 已满,它开始使用交换,交换已满,恢复服务器的唯一方法是重新启动 httpd 服务,或者上帝保佑,重新启动服务器本身!

VPS 用作网络服务器、邮件服务器时有 2GB 的 RAM,并且还安装了 MySql。php.ini 文件允许 max_memory=140M(我认为有点高?!)但是现在他们确实需要这个数量。快速计算一下 VPS 正在执行的其他任务,我认为为 apache 分配 1GB 内存是安全的。

但是我在网上找不到任何方法来计算 mpm_event 的设置以将其使用量限制为最大 1GB。

任何有关此计算的帮助都将不胜感激

需要来自评论的信息:

ps -ef | grep php=>nothing

来自 Apache 的 phpinfo() =>Server Api : CGI/FastCGI

apachectl -M=>

Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authn_dbm_module (static)
 authn_anon_module (static)
 authn_dbd_module (static)
 authn_socache_module (static)
 authn_core_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_dbm_module (static)
 authz_owner_module (static)
 authz_dbd_module (static)
 authz_core_module (static)
 access_compat_module (static)
 auth_basic_module (static)
 auth_form_module (static)
 auth_digest_module (static)
 allowmethods_module (static)
 file_cache_module (static)
 cache_module (static)
 cache_disk_module (static)
 cache_socache_module (static)
 socache_shmcb_module (static)
 socache_dbm_module (static)
 socache_memcache_module (static)
 so_module (static)
 macro_module (static)
 dbd_module (static)
 dumpio_module (static)
 buffer_module (static)
 ratelimit_module (static)
 reqtimeout_module (static)
 ext_filter_module (static)
 request_module (static)
 include_module (static)
 filter_module (static)
 substitute_module (static)
 sed_module (static)
 deflate_module (static)
 http_module (static)
 mime_module (static)
 log_config_module (static)
 log_debug_module (static)
 logio_module (static)
 env_module (static)
 expires_module (static)
 headers_module (static)
 unique_id_module (static)
 setenvif_module (static)
 version_module (static)
 remoteip_module (static)
 proxy_module (static)
 proxy_connect_module (static)
 proxy_ftp_module (static)
 proxy_http_module (static)
 proxy_fcgi_module (static)
 proxy_scgi_module (static)
 proxy_wstunnel_module (static)
 proxy_ajp_module (static)
 proxy_balancer_module (static)
 proxy_express_module (static)
 session_module (static)
 session_cookie_module (static)
 session_dbd_module (static)
 slotmem_shm_module (static)
 ssl_module (static)
 lbmethod_byrequests_module (static)
 lbmethod_bytraffic_module (static)
 lbmethod_bybusyness_module (static)
 lbmethod_heartbeat_module (static)
 unixd_module (static)
 dav_module (static)
 status_module (static)
 autoindex_module (static)
 info_module (static)
 suexec_module (static)
 cgi_module (static)
 dav_fs_module (static)
 dav_lock_module (static)
 vhost_alias_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 speling_module (static)
 userdir_module (static)
 alias_module (static)
 rewrite_module (static)
 suphp_module (shared)
 ruid2_module (shared)
 mpm_event_module (shared)

答案1

请注意,如果您使用的是 mod_php,它与线程式 apache 工作程序不兼容,您只能将其与 mpm_prefork 一起使用。如果您坚持使用 mpm_event(甚至 mpm_worker),可以使用 php-fcgi,这是一种更好但更复杂的设置。这样,您将拥有一个完整的 apache / php 分离,因此您可以在 apache 上使用 pmp_event 并仅将 php 请求传递给由 php-fcgi 管理的 php 进程池。

但是既然您谈到了内存和交换,我将更多地关注 hpp 部分的调整。您能确认您使用的是 mod_php 吗?如果是,php.ini 中的内存设置是什么?

相关内容