我有一个 64 位的 debian 6。我要安装灯。在一些网站上我发现:
apt-get install apache2
Run Code Online (Sandbox Code Playgroud)
在其他一些:
apt-get install apache-mpm-prefork
Run Code Online (Sandbox Code Playgroud)
我应该选择哪一个?
谢谢
我在专用服务器上运行带有 MPM prefork 的 Apache 2.2.21。更多细节:
Server Version: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0-fips DAV/2 SVN/1.7.0 mod_python/3.3.1 Python/2.6.5 mod_bwlimited/1.4 PHP/5.3.6
Run Code Online (Sandbox Code Playgroud)
流量通常在 10-30 个请求/秒之间,有 12GB 的 RAM,我们相当保守地调整了 MaxClients (250)。由于各种原因,我们确实看到了使用高峰(在较旧的服务器上,在这些高峰期间,我们的 MaxClients 数次达到 100)。
无论如何,这是一个新服务器。运行一段时间后,我们的 Apache 状态开始看起来像这样:
GGG_._._RC_.G..C.G_G.C_G..C_.CG_._._G__W____..R.WCR_.W..G_......
Run Code Online (Sandbox Code Playgroud)
G(“优雅地完成”)被卡住了。如果我重新启动 Apache,它们只会消失。这肯定会导致我们在没有定期监控/修复的情况下达到我们的 MaxClients 限制。我在互联网上四处阅读,Apache 中似乎有一个与此类似的错误,但发生在不同的条件下。它显然也在 2.2.14 版中得到了修复。
我包含了一个挂起进程的堆栈跟踪供您检查。
#0 0x000000350c6f119e in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x000000350c67c138 in _L_lock_9164 () from /lib64/libc.so.6
#2 0x000000350c679a32 in malloc () from /lib64/libc.so.6
#3 0x000000350c66fcfb in __libc_message () from /lib64/libc.so.6
#4 0x000000350c675676 in malloc_printerr () from /lib64/libc.so.6
#5 0x000000350c675aa1 in malloc_consolidate …
Run Code Online (Sandbox Code Playgroud) 我正在使用 puppetlabs apache 模块来管理我的 apache 配置。
我配置了所有内容,除了mod_prefork
. 有一个 prefork 模板,它在以某种方式初始化类时变得可变,但我不确定如何。
我不想手动更改模板中的服务器设置,因为我在多个主机上运行 apache 并且不想更改模板本身中的值。
你知道怎么做吗?该模块的链接在这里。
我通读了文档,但我无法弄清楚如何去做。
我正在尝试使用 jmeter 测试加载我的团队在 AWS ubuntu 14.04 上开发和部署的 LAMP 应用程序。我们使用 AWS CDN 来提供静态文件,mysql 和 apache 在同一台主机上。
当只有一个用户在做事时,响应时间是正常的,根据页面的不同在 2 到 5 秒之间。
我的目标是让它在同一时间响应 500 个同时做事的连接用户。
我从较少数量的用户开始,在 t2.small(1vCPU,2 Gb RAM)上使用 mod_php 和 prefork 模块,我对只有 40 个连接的用户感到满意。一旦有 100 个,它就会以 +20 秒的响应时间极度减慢。
在进行了一些 SO 资源之后,我尝试使用 php-fpm 和 event 模块。性能更好,但仍然很慢;任何单页 +15 秒。我决定将服务器升级到 M4.2xlarge(8vCPU,32 Gb RAM)。对于 100 个连接的用户,它表现正常,我很满意,但这是一个昂贵的,我想使用最合适的服务器规格找到更好的性能。
不管怎样,我试图用 330 个连接的用户同时做事来测试这个 M4.2xlarge,它变得太慢了,每页 +15~+20s。一直在尝试调整事件配置和 fpm 进程,但没有运气(在大多数情况下,我有 +90?cpu,但没有使用足够的 RAM,这就是为什么我认为我们在某处有限制)。
我觉得我很接近,但我做不到。我将使用您要求的任何文件、日志或输出更新我的问题。
如何在 ubuntu 服务器上从 prefork mpm 切换到 worker mpm?
如果有问题如何回滚?
root@myserver:~# apache2ctl -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c
root@myserver:~# aptitude search apache2-mpm-
p apache2-mpm-event - Event driven model for Apache HTTPD
p apache2-mpm-itk - multiuser MPM for Apache 2.2
p apache2-mpm-perchild - Transitional package - please remove
i A apache2-mpm-prefork - Traditional model for Apache HTTPD
p apache2-mpm-worker - High speed threaded model for Apache HTTPD
root@myserver:~#
Run Code Online (Sandbox Code Playgroud)
提前致谢。
今天我们在服务器上遇到了一个问题,文件/脚本的加载时间超过了 3 秒。解决方案很简单 - 只需将 MaxClients 增加到估计的内存限制即可。但我担心该解决方案的可扩展性,它似乎不太可靠——如果负载稍微增加,问题会再次出现。
我们正在开发的网络服务的性质——小型在线游戏——要求我们嵌入 AJAX 机制,该机制每 15 秒发送一个信标,指示客户端在线。
让我们想象以下设置。Apache 2 (mpm_prefork), MaxClients = 150, KeepAlive = on, KeepAliveTimeout = 5. 有300个用户在线。我的理解是否正确 - 如果所有 300 个用户将同时发送一个信标(仅通过使用 POST 检索信标.php 脚本) - 前 150 个客户端将几乎立即得到答案,而其他 150 个客户端将不得不等待 5 秒才能得到一个回答?
还有第二个问题。在我的情况下,最好的解决方案是什么?完全禁用保持活动?
只需阅读使 WordPress 在 EC2-Micro 上稳定
在“调整 Apache”部分,我不太明白他是如何为他的 prefork 配置得出他的数字的。
他解释了如何获得我得到的平均过程的数字。但是之后:
或者每个进程大约 53MB...在这种情况下,十个线程应该是安全的。这意味着如果我们同时收到十多个请求,其他请求将排队等待,直到有可用的工作线程。为了最大限度地提高性能,我们还将系统配置为始终具有此数量的可用线程。
从每个进程 53MB 到 613MB 的 RAM,他以某种方式获得了这个配置,而我没有得到:
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxClients 10
MaxRequestsPerChild 4000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
他究竟是如何从每个进程 53MB 得到这个的,限制为 613MB?
奖金问题
从下面,在一个小实例(1.7 GB 内存)上,什么是好的设置?
bitnami@ip-10-203-39-166:~$ ps xav |grep httpd
1411 ? Ss 0:00 2 0 114928 15436 0.8 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1415 ? S 0:06 10 0 125860 55900 3.1 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1426 ? S 0:08 19 0 127000 62996 3.5 /opt/bitnami/apache2/bin/httpd -f …
Run Code Online (Sandbox Code Playgroud) 我们有一个 LAMP 设置,当 Apache 服务器(MySQL 服务器不在这个机器上)刚刚开始死机时,它已经运行了半年。随着时间的推移,它似乎已经开始产生越来越多的进程。最终它会消耗所有内存,服务器就会死掉。我们正在使用预分叉。
与此同时,我们只是不断增加 RAM,并将 MaxClients 和 ServerLimit 参数增加到 512。但我们只是延长了崩溃时间。这个数字还在缓慢上升。也许有一天,它会达到那个极限。
到底是怎么回事?我们每秒只有大约 15-20 个请求。我们有 1 GB 的内存,但还没有使用一半。没有进行交换。
为什么 Apache 创建越来越多的进程?几乎就像某处有泄漏一样!
数据库框很好,它们不会导致请求延迟。我们测试了一些查询一切都很快!
我正在使用 prefork apache 2.2,我似乎无法弄清楚为什么有 MaxClients 指令和 ServerLimit 指令。
我知道您需要逐步增加这两项 - 谷歌已经一遍又一遍地告诉我这一点。据我所知,它们都控制着随时运行的 Apache 进程的最大数量。
为什么它们都存在?对于 prefork,它们似乎是多余的。我错过了一个微妙的区别吗?
我管理一个 Centos 6.6 服务器(使用 cpanel 过期许可证/也许这并不重要),它有 8 个内核和 64GB RAM,当它达到 250 到 300 个同时连接时,我的 HTTP 服务器变得非常慢。
当我发现 mpm prefork 配置作为提高服务器性能的解决方案时,我在 httpd.conf 文件及其所有包含的文件中寻找参数,但什么也没有。看起来我的 apache 使用默认的 mpm 参数。
所以我尝试添加一个新配置,并通过我的 mod_status 网页注意到最大客户端数量的一些变化。当我将ServerLimit和MaxClients 的值设置为小于 256 时,服务器状态显示会发生变化,但是当我尝试使用大于 256的值时,它只会停在 256 处。
这是服务器状态页面的简明版本,MaxClients和ServerLimit设置为257,但它在 64 个工人的 4 行中正好显示 256 个插槽。与http://apache.org/server-status 比较
Server Version: Apache/2.4.10 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
Server MPM: prefork
Server Built: Jan 23 2015 21:04:30
--------------------------------------------------------------------
Current Time: Thursday, 12-Feb-2015 19:15:49 CET
Restart Time: …
Run Code Online (Sandbox Code Playgroud) mpm-prefork ×10
apache-2.2 ×8
amazon-ec2 ×2
apache-2.4 ×2
centos6.5 ×1
debian ×1
keepalive ×1
lamp ×1
linux ×1
mpm-worker ×1
mysql ×1
performance ×1
php ×1
php-fpm ×1
php5 ×1
puppet ×1
ubuntu ×1
wordpress ×1