基于飞腾腾云S2500的Apache部署及调优指南

【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧        

本文分享来源于 飞腾开发者平台《基于飞腾腾云S2500的Apache部署及调优指南》

        Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将Perl/Python等解释器编译到服务器中。

        Apache源于NCSA httpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache Web服务器拥有以下特性:

  1. 支持最新的HTTP/1.1通信协议
  2. 拥有简单而强有力的基于文件的配置过程
  3. 支持通用网关接口
  4. 支持基于IP和基于域名的虚拟主机
  5. 支持多种方式的HTTP认证
  6. 集成Perl处理模块
  7. 集成代理服务器模块
  8. 支持实时监视服务器状态和定制服务器日志
  9. 支持服务器端包含指令(SSI)
  10. 支持安全Socket层(SSL)
  11. 提供用户会话过程的跟踪
  12. 支持FastCGI
  13. 通过第三方模块可以支持JavaServlets


1 环境要求

1.1 硬件配置

用途

型号

网络服务器

飞腾腾云S2500处理器服务器

客户端

飞腾腾云S2500处理器服务器

1.2 软件版本

软件名

对应版本

httpd

2.4.49

LuaJIT

2.1

apr

1.7.0

apr-util

1.6.1

pcre

8.45

2 应用部署

        下面将详细介绍Web应用Apache的搭建步骤,并对其性能进行验证,主要包括如下步骤:

        第一步,获取源码;

        第二步,编译安装apr;

        第三步,编译安装apr-util;

        第四步,编译安装pcre;

        第五步,编译安装httpd;

        第六步,配置httpd端口;

        第七步,运行验证。在运行验证时,通过网络服务器启动Apache服务,在客户端使用ab工具进行性能测试,一般地,模拟200用户共同发起20万次网络请求,之后,获取TPS(Requests per second)值。需要注意的是,网络服务器和客户端都需要部署Apache环境。

3 应用调优

3.1 调优目的

        通过调整Apache配置文件来有效地提高Web应用性能。

3.2 调优方法

3.2.1 物理绑核

        使用taskset对apache进程进行绑核,防止进程跨路;操作如下:

taskset -c 0-63 /usr/local/httpd-2.4.49/bin/apachectl start

3.2.2 优化httpd.conf

        修改配置文件httpd.conf内容,主要包括:

        1、启动压缩;

        2、启用重写;

        3、提供文件描述符缓存支持;

        4、启用基于URL键的内容动态缓冲(内存或磁盘);

        5、启用基于磁盘的缓冲管理器;

        6、基于内存的缓冲管理器;

        7、屏蔽所有不必要的模块;

        8、启动静态文件缓存;

        9、允许apache修改或清除传递到cgi或ssi页面的环境变量;

        10、禁止根据客户端请求头字段设置环境变量;

        11、禁止生成描述服务器状态的页面;

        12、启用过滤(使用缓存必须启用过滤模块)。

3.2.3 配置mpm模式

        Apache提供了多处理模块(MPM),用来绑定到网络端口上,接受请求以及调度子进程处理请求。

模块名

说明

Prefork

在启动时会预派生多个子进程,每个子进程只有一个线程。不需要担心线程安全问题,但是每个进程都占用系统资源,在处理高并发请求的场景中,会消耗大量的系统资源。

Worker

每个子进程能生成更多的线程,每个线程都能处理请求。减少了子进程数以及内存使用量,提升了服务器的并发能力,但安全性低,不能与不是线程安全的模块一起使用。

Event

基于Worker模块,但它解决了 keep-alive 场景下,长期被占用的线程的资源浪费问题。Event模块会有一个专门的线程管理keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样一个线程就能处理几个请求,实现异步非阻塞。

        MPM模块的加载方式是在httpd.conf中添加下列内容(三者任选其一):

LoadModule mpm_event_module modules/mod_mpm_event.so

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

#LoadModule mpm_worker_module modules/mod_mpm_worker.so

        如果需要调整MPM模块进程细节,则需要在httpd.conf中启用MPM模块配置文件:

Include conf/extra/httpd-mpm.conf

        详细的MPM模块配置文件是httpd-mpm.conf,文件中包含以下内容:

Prefork MPM模块

        默认配置:

<IfModule mpm_prefork_module>
    StartServers               5
    MinSpareServers            5
    MaxSpareServers            10
    MaxRequestWorkers          250
    MaxConnectionsPerChild     0
</IfModule>

        其中StartServers代表初始化预派生的子进程数,MinSpareServers代表最小空闲子进程数,MaxSpareServers代表最大空闲子进程数,MaxRequestWorker代表最大请求数(因为在Prefork MPM模块中一个请求数对应一个子进程,故也可以理解为最大派生子进程数),MaxConnectionsPerChild代表每个进程可处理的请求数(达到目标值后该进程将被杀死,0代表没有限制)。

Worker MPM模块

        加载方式为在httpd.conf中添加下列内容:

LoadModule mpm_worker_module modules/mod_mpm_worker.so

        默认配置:

<IfModule mpm_worker_module>
    StartServers               3
    MinSpareThreads            75
    MaxSpareThreads            250
    ThreadsPerChild            25
    MaxRequestWorkers          400
    MaxConnectionsPerChild     0
</IfModule>

        其中StartServer代表初始化预派生的子进程数,另外可以使用ServerLimit来指定最大进程数(默认为16)。MinSpareThreads代表最小空闲线程数,MaxSpareThreads代表最大空闲线程数,ThreadsPerChild代表每个子进程可创建的线程数,MaxRequestWorkers代表最大请求数(因为在Worker MPM模块中,一个请求数对应一个线程,故也可以理解为最大线程数。理论上,最大线程数不能超过最大进程数与每个进程可创建的线程数的乘积),MaxConnectionsPerChild代表每个进程可处理的请求数(达到目标值后该进程将被杀死,0代表没有限制)。

Event MPM模块

        加载方式为在httpd.conf中添加下列内容:

LoadModule mpm_event_module modules/mod_mpm_event.so

        默认配置:

<IfModule mpm_event_module>
    StartServers               3
    MinSpareThreads            75
    MaxSpareThreads            250
    ThreadsPerChild            25
    MaxRequestWorkers          400
    MaxConnectionsPerChild     0
</IfModule>

        参数作用与Worker MPM模块一致。

3.3 调优示例

        示例环境为一台飞腾腾云S2500处理器服务器与一台英特尔X86服务器,Apache同时部署在两台服务器上,飞腾腾云S2500处理器服务器作为Apache服务器,X86服务器作为客户端模拟200用户发起20万次网络请求,模拟100次后取TPS算平均值。由于Event是明显优于Worker的,所以优先选择Event模式,其初始配置如下:

初始进程数:3

最大进程数:16

最小空闲线程数:75

最大空闲线程数:400

每进程可创建线程数:25

最大线程数:400

        下表中的调优记录均为Event模式下测出,且都基于上述配置进行修改。

序号

吞吐量

调优措施

1

62722

初始配置

2

57165

最大进程数:16->8,最大线程数:400->200

3

30372

最大进程数:16->4,最大线程数:400->100

4

61362

最大进程数:16->24,最大线程数:400->600

5

64477

最大进程数:16->40,每进程可创建线程数:25->10

6

58884

最大进程数:16->10,每进程可创建线程数:25->40

7

63783

最大进程数:16->80,每进程可创建线程数:25->5

8

98785

绑核0-63

        二次测试以确认调优效果(测试前充分预热可让数值整体提升,预热操作为用ab压测十次)。

序号

吞吐量

调优措施

1

66403

初始配置

2

66818

最大进程数:16->24,最大线程数:400->600

3

69565

最大进程数:16->40,每进程可创建线程数:25->10

4

65990

最大进程数:16->10,每进程可创建线程数:25->40

5

68302

最大进程数:16->80,每进程可创建线程数:25->5

6

103228

绑核0-63

        由上表可知,通过绑核以及调整进程数与线程数的搭配可以提升Apache的性能。在飞腾腾云S2500处理器服务器上,通过设置最大进程数为40,每进程可创建线程数为10且将apache进程绑核0-63可达到最佳性能。

4 常见问题

        1)apr-util编译报错

        如果报错内容如下图所示:

        则通过安装expat-devel包可以解决。

        2)修改Apache配置后不生效

        部分Apache配置修改后需要关闭Apache服务再启动,直接重启服务不生效。

# /usr/local/httpd-2.4.49/bin/apachectl stop && sleep 4 && /usr/local/httpd-2.4.49/bin/apachectl start

5 附录

5.1 示例脚本

        预热:

# for i in {1..10};do ab -c 200 -n 200000 -k http://10.31.72.37:80/index.html;sleep 2;done

        压测:

# rm -f ave.log;for l in {1..20};do rm -f tmp.log;for i in {1..5};do ab -c 200 -n 200000 -k http://10.31.72.37:80/index.html|grep "Requests per second" >> tmp.log;sleep 1;done ;cat tmp.log|awk -F" " 'BEGIN{sum=0} {sum=sum+$4} END{print sum/5}' >> ave.log;done;cat ave.log |awk 'BEGIN{sum=0} {sum=sum+$1} END{print sum/20}'

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们


版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 飞腾S2500的CPU无法生成vmcore,这可能是由于内核参数未设置正确导致的。您可以尝试在内核启动参数中添加"crashkernel=128M",然后重新启动系统。这将允许内核在发生崩溃时生成vmcore文件。 另外,还可能是由于硬件问题导致的,您可以尝试检查硬件是否存在问题或者更新硬件驱动程序。 如果这些都没有解决问题,您可以考虑寻求技术支持或者更换新的CPU。 ### 回答2: 如果飞腾S2500的CPU无法生成vmcore,可能是由于硬件或软件故障导致的。下面是处理此问题的一些方法: 1. 检查硬件连接:首先检查CPU与主板之间的连接是否良好,确保CPU插槽没有松动或脏污。可以试着重新插拔CPU以确保连接正常。 2. 更新固件和驱动程序:飞腾S2500的CPU可能需要更新固件和驱动程序才能正常工作。访问飞腾官方网站,查找更新版本的固件和驱动程序,并按照官方提供的指引来进行更新。 3. 检查操作系统:如果使用Windows操作系统,可能需要检查操作系统是否需要更新或重新安装。确保操作系统版本与飞腾S2500的CPU兼容,并按照官方提供的指引进行更新或重新安装。 4. 检查BIOS设置:进入计算机的BIOS设置界面,检查CPU相关的设置是否正确。可以尝试将设置重置为默认值,并保存设置后重新启动计算机。 5. 联系技术支持:如果以上方法都无法解决问题,建议联系飞腾的技术支持团队。提供详细的问题描述,并提供系统的硬件和软件信息,以便他们更好地诊断和解决问题。 需要注意的是,如果以上方法无法解决问题,可能需要将计算机送修或更换故障的硬件部件。还请注意备份重要的数据,以免因处理过程中造成数据丢失。 ### 回答3: 如果飞腾S2500的CPU无法生成vmcore(内核转储文件),我们可以尝试以下几种处理方式。 首先,确保系统中已经安装了kdump工具和相关依赖。kdump是一个用于在内核崩溃时生成内核转储文件的工具。如果系统没有安装kdump,我们可以通过命令行执行以下命令进行安装: ``` sudo apt-get install kdump-tools ``` 其次,检查是否已经启用了kdump。我们可以通过以下命令来检查kdump是否已经启用: ``` sudo systemctl status kdump ``` 如果kdump没有启用,我们可以通过编辑`/etc/default/kdump-tools`文件来启用kdump。打开文件并将`USE_KDUMP="1"`修改为`USE_KDUMP="yes"`,然后保存并关闭文件。 接下来,重启服务器以使修改生效: ``` sudo reboot ``` 在系统启动时,kdump应该已经启用。我们可以使用以下命令来检查kdump是否正在运行: ``` sudo systemctl status kdump ``` 如果kdump仍无法生成vmcore文件,我们可以尝试更新kdump工具和相关依赖: ``` sudo apt-get update sudo apt-get upgrade kdump-tools ``` 如果更新仍未解决问题,我们可以查看系统日志以获取更多信息: ``` sudo journalctl -u kdump ``` 最后,如果问题仍然存在,我们可以尝试与服务器制造商或飞腾S2500的支持团队联系,向他们报告问题并寻求他们的帮助和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值