Linux下的Apache性能参数在线调节系统

MQTT在智能家居中的实战:用Android手机控制ESP8266设备(基于EMQX) 本文详细介绍了如何利用MQTT协议构建一个完整的智能家居控制系统,通过Android手机App远程操控ESP8266设备。文章提供了从EMQX服务器部署、ESP8266端Arduino固件开发到Android客户端搭建的完整实战指南,并深入探讨了系统联调、稳定性优化与安全加固等关键环节,为物联网开发者提供了一套可复用的解决方案。 阅读详情
  
摘要 本文在Linux 2.6.9平台下,针对Apache Web Server实现了关键性能参数的在线调节,使得网络管理员能在服务繁忙的情况下,不用重起服务就能调节服务器的性能参数,减少因为重起服务引起的经济损失。
关键词 Web服务器 Apache   共享内存 在线调节
 
Abstract: Thispaper designs and implements an online parameter-tuning system for Apache web server under Linux 2.6.9 platform. This system enables the web administrator to tuning the performance parameters of server without restarting the web service, hence reduces the cost caused by restarting the web service.
Keywords: Web Server     Apache   shared memory   online tuning

1  引言

Apache是如今Internet上最流行的web服务器。Netcraft的调查表明,世界上超过60%的网络Web服务器都使用Apache作为Web服务软件。Apache是一个开放源代码(Open Source)软件,它健壮、高效、模块化、响应速度快,并且可靠稳定。

Web管理员可以通过调节Apache配置文件中的性能参数来调节和优化服务器的性能,然而这种方法只能实现静态调节,一旦服务器启动,对配置文件中的任何参数修改只有在重新启动服务器的情况下才能起作用。在网络服务繁忙的情况下重新启动服务器需要付出代价,因为在重起的过程中会拒绝某些服务,在电子商务中拒绝服务往往会引起经济损失。该文阐述在Linux平台下如何实现Apache参数在线调节,使得管理员可以根据负载情况动态调节服务器的性能参数以提高web服务的性能,避免重新启动服务带来的损失。

 

2  Apache服务器简介

本文使用的是Apache 2.0.52版本,相对于Apache 1.3版本来说,Apache 2.0更容易移植,更加可靠,它完全基于模块。Apache 2.0的多道处理模块(mpm)的引入使得用户可以根据不同站点的特点和需求来选择安装不同的mpm来实现不同的运行方式。Apache2.0.52中的mpm模块有:

1.       预先派生(prefork)

2.       工作者(worker)

3.       WinNT

4.       beos

5.       os2

6.       netware

7.       独立子进程(perchild)

8.       领导者(leader)

9.       线程池(threadpool)

其中后三个是试验模块,而前六个已经比较成熟稳定,3,4,5,6这四个mpm主要是针对对应的操作系统设计的。prefork模块是多进程预先派生模块,而工作者(worker)模块以多进程多线程的方式工作。本文中使用的是prefork模块。

 

3  Apache配置参数简介

apache的配置文件httpd.conf中提供了很多可供web管理员配置的性能参数,其中最大子进程数(MaxClients)和KeepAliveTimeout(保持连接超时)是对服务器性能影响最大的两个参数。

MaxClients如果设的过小,则在连接多的情况下,客户就得排队等候,造成了系统资源没有充分利用。而MaxClients如果设的过大,服务器就会超负载运行,从而使得整体性能下降。

KeepAliveTimeout是主要是针对http1.1连接请求所设置的参数。它设置了在两次连接请求之间所等待的时间,如果两次连接请求之间间隔超过KeepAliveTimeout,服务器就断开本次连接。

KeepAliveTimeout如果设的过小的话,保持连接的优势无法发挥。而KeepAliveTimeout如果设的过大,由于一个子进程一次只能处理一个连接,造成了子进程被绑在某个连接上,从而造成资源浪费,并且在负载重的情况下,造成很多用户需要排队等候,而CPU却空闲的现象。

 

4  在线参数调节系统的实现

4.1  Apache服务器的工作方式

要实现Apache的在线参数调节,首先要了解Apache的工作方式。本文使用的mpmprefork,因此着重介绍prefork的工作方式。

prefork模块是多进程模块,启动时,由父进程派生出多个子进程,父进程是管理进程,它按照配置文件的配置参数来控制子进程数,处理异常退出的子进程并向日志中记录出错情况,维护服务器的正常运转,它并不直接处理连接请求。服务器的连接请求是由派生出来的子进程进行处理的。父进程和子进程间通过记分板(scoreboard)进行通信。

记分板实际上是一段共享内存,它记录了一些全局的信息例如进程数上限(server_limit)和线程数上限(thread_limit),并且它还维护着每个工作子进程或线程的情况如进程号(pid),线程号(thread_num)以及进程或线程所处的状态(status)等。

要从外部程序在线修改apache的性能参数,需要通过读写共享内存记分板来实现。一般需要在共享内存记分板添加各性能参数对应的变量,通过动态修改记分板中的变量来动态调整apache的性能参数。

 

4.2  读写Apache服务器的共享内存

要从外部程序读写Apache的记分板,首先要了解是操作系统的共享内存机制的以及Apache共享内存中的具体内容。Apache API函数库中有六个宏,可以通过测试这几个宏的值来了解操作系统的共享内存机制,这几个宏是:

1.  APR_USE_SHMEM_MMAP_ZERO

2.  APR_USE_SHMEM_MMAP_ANON

3.  APR_USE_SHMEM_SHMGET_ANON

4.  APR_USE_SHMEM_MMAP_TMP

5.  APR_USE_SHMEM_MMAP_SHM

6.  APR_USE_SHMEM_SHMGET

其中前三个是匿名共享内存的创建方式,后三个是有名共享内存的创建方式,其中1,2,4,5这四个宏是Posix共享内存方式,而3,6System V共享内存方式。

通过测试,Linux 2.6.9系统上所使用的是APR_USE_SHMEM_MMAP_ANONAPR_USE_SHMEM_SHMGET

 

通过设置配置文件中的ScoreboardFile选项使服务器使用有名共享内存,即System V的共享内存机制。这样apache所使用的共享内存shmid可以通过在root权限下执行ipcs命令获得。

 

至于共享内存的内容,Apache源代码中有一个名为记分板的数据结构,其结构如下:

typedef struct{

            global_score *global;

            process_score *parent;

            worker_score **servers;

     }scoreboard;

而共享内存记分板中的内容如图1所示,在共享内存的起始处有一

                              1 .Apache 共享内存记分板的内容

因此读取记分板内容首地址的伪代码如下(如果采用Posix有名共享内存机制的话)

{

Char* m;

m=shmat(shmid,NULL,0);

}

从而我们可以通过获取的共享内存首地址m对共享内存进行读写访问,有目的地修改记分板的内容。

 

 

4.3  Apache源代码的修改

我们只介绍maxclients参数的在线调节的实现。

首先在global_score结构中增加一个变量my_daemons_limit,该结构存在于记分板头文件scoreboard.h中,该文件类似地定义了与记分板内容有关的结构变量如process_score,worker_score等。

scoreboard.c中将my_daemons_limit的初始值设置为配置文件中配置的maxclients参数值,这主要通过ap_mpm_query函数来实现,代码为:

Ap_mpm_query(AP_MPMQ_MAX_DAEMON_USED,& my_daemons_limit)

为了使其它程序访问到真实的最大子进程数即记分板中的my_daemons_limit值,在ap_mpm.h中添加一个宏AP_MPMQ_MY_MAX_DAEMON_USED,并且在prefork.cap_mpm_query函数的适当位置添加以下代码:

Case  AP_MPMQ_MY_MAX_DAEMON_USED:

*result=ap_scoreboard_image->global->my_daemons_limit;

return APR_SUCCESS;

同时将其它文件中调用Ap_mpm_query(AP_MPMQ_MAX_DAEMON_USED,…)函数的地方改为Ap_mpm_query(AP_MPMQ_MY_MAX_DAEMON_USED,…).

改动较大的是在prefork.c中,除了ap_mpm_queryset_max_clients函数中的ap_daemons_limit保持不变外,其它地方的ap_daemons_linit应相应改为ap_scoreboard_image->global->my_daemons_limit,比较特别的一处是在perform_idle_server_maintainance中应改为server_limit因为该循环是查询记分板中的各个进程状态并设置相应的计数值,而外部程序设置的最大子进程数可能比初始值大也可能比初始值小。

perform_idle_server_maintainance中还应该修改相应的代码以控制活动子进程数(total_non_dead)不超过my_daemons_limit.

 

至此,通过对apache源代码的修改和重新编译安装后,我们可以根据4.2节的方法编写外部程序来随意修改性能参数的值。伪代码如下:

{

Char* m;

Global_score*  global;

m=shmat(shmid,NULL,0);

global= (global_score*)m;

set(global->my_daemons_limit);

shmctl(shmid,IPC_RMID,0);

exit(0);

}

 

5   结论与展望

本文在Linux 2.6.9平台下,针对Apache Web Server实现了关键性能参数的在线调节,使得系统管理员能在服务繁忙的情况下,不用重起服务就能调节服务器的性能参数,减少因为重起服务引起的经济损失。

我们还可以通过动态调节参数程序的进一步编写来实现在线检测负载大小并根据目前的系统资源使用状况自动调节参数的功能,这是我们进一步要完成的工作。

 

参考文献

1.       Ryan B.Bloom .袁勤勇,何欣等译.Apache Server 2.0技术参考大全.清华大学出版社,2003

2.       W.Richard Stevens.杨继张译.Unix网络编程-2卷:进程间通信.清华大学出版社,2000

3.       Y Diao, N Gandhi, JL Hellerstein et al.Using MIMO Feedback Control to Enforce Policies for Interrelated Metrics With Application to the Apache Web Server. Network Operations and Management Symposium,2002

4.       Apache Software Foundation.http://www.apache.org

优化Apache HTTP服务器性能 记住,在应用这些优化方法时,要根据你的具体需求和服务器环境进行适当的调整和测试,以获得最佳的性能改进。使用适当的缓存策略可以使用Apache的模块,如mod_expires和mod_headers,设置静态文件的缓存策略。通过将适当的缓存控制头添加到服务器的响应中,可以让客户端缓存静态文件,减少对服务器的请求。根据服务器的硬件配置和负载情况,调整线程和进程的数量可以提高服务器的性能。可以使用Apache的模块,如mod_cache和mod_disk_cache,启用内存缓存和磁盘缓存。 阅读详情

相关推荐

系统架构设计师备考攻略

计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试。 软考没有学历、专业、年龄、相关工作经验要求,你可以根据自身选择合适的去报名(也就是说你直接直接报高级),但是一次考试只能报一种。 计算机软件资格考试纳入全国专业技术人员职业资格证书制度的统一规划,实行统一大纲、统一试题、统一标准、统一证书的考试办法,每年举行两次。通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位聘任相应专业技术职务(助理工程师、工程师、高级工程师)。

帅次的博客 6514

Linuxapache性能配置调优

Apache 性能配置优化 ###httpd 相关查看命令了解 查看当前安装模块mpm(多路处理器) [root@localhost ~]# httpd -l 查看httpd进程数(即各个mpm模式下Apache能够处理的并发请求数) [root@localhost ~]# ps -ef | grep httpd | wc -l 得到的结果数字就是表示可以同时并发的进程数据,一个父进程,5个子进程。apache默认是开启5个子进程 查看Apache的并发请求数及其TCP连接状态 [root@localho

Hello!C先生的博客 1269

IEEE 1394b-2008协议标准

IEEE1394b-2008协议规范,官方正式版本,很难找的哦!

linux apache参数优化,linuxApache/http 进程优化说明

对于网站来讲主要是CPU、TCP链接数这二者。 CPU表如今任务数上,在Linux下使用平均负载(loadavg)来衡量。可经过如下命令来查看:cat /proc/loadavg对于单CPU的服务器,loadavg高于1,代表任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能下降了。TCP链接数可经过如下命令查看:netstat -ant | grep :80 | wc -l若是要实...

weixin_33223705的博客 313

linux apache 优化,详述Linux系统中Apache网页与安全优化(一)

Apache网页优化Apache网页优化概述在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容优化内容配置网页压缩功能工作模式的选择与参数优化配置防盗链配置隐藏版本号.......网页压缩gzip介绍配置Apa...

weixin_28800247的博客 273

LinuxApache的网页优化

一、Apache网页优化概述 为了适应企业需求的优化内容: 配置网页压缩功能 配置网页缓存 工作模式的选择与参数优化 配置隐藏版本号 配置防盗链 …… 1、gzip介绍 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器 作用: 降低了网络传输的字节数,加快网页加载的速度 节省流量,改善用户的浏览体验 gzip与搜索引擎的抓取工具有着更好的关系 2、Apache的压缩模块 Apache实现网页压缩的功能模块:mod_ gzip 模块、mod_ defla

灵魂在求知中净化。。。 211

Linux上优化HTTP服务器的性能

优化图片、CSS和JavaScript文件的大小和数量,以及使用CDN来分发这些文件,都可以提高网站的性能。例如,对于高并发请求,Nginx是一个很好的选择,因为它具有较低的内存占用和更高的并发性能。选择适当的服务器硬件和进行正确的网络设置对于优化HTTP服务器的性能至关重要。总之,在Linux上优化HTTP服务器的性能需要综合考虑多个方面,包括服务器软件、配置、内容以及硬件和网络环境。在Linux上优化HTTP服务器的性能是一个涉及多个方面的任务,包括服务器硬件、网络设置、软件配置和内容优化。

weixin_73725158的博客 607

Linux系统中HTTP服务的配置与优化

通过选择合适的Web服务器软件、调整服务器参数、优化文件传输性能以及加强安全配置等措施,可以构建出稳定、高效、安全的Web服务环境,为用户提供更好的在线体验。Apache以其丰富的功能和强大的扩展性受到许多开发者的喜爱,而Nginx则以其高性能和轻量级的特点赢得了广泛的应用。另外,对于安全性要求较高的Web应用,还需要加强HTTP服务的安全配置。通过收集和分析服务器的访问日志、性能数据等信息,可以及时发现并解决潜在的问题,进一步提升HTTP服务的稳定性和性能。首先,调整服务器的并发连接数。

weixin_73725158的博客 440

Linux 的性能调优的思路

Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下有无数的开源软件支撑,我们常见的apache、tomcat、mysql等。 开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是通过这些开源软件的支持,以最低廉的成本,达到应用最优的性能。因此,谈到性能问题,主要实现的是Linux操作系统和应用程序的最佳结合。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 180

linux修改tcp参数设置,Linux下Http高并发参数优化之TCP参数

Linux下Http高并发参数优化之TCP参数2017-06-06 22:19:32TCP/IPSocketLinuxHttp11599导读:Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。在上一篇Linux参数优化之TCP/IP基础中,提到了Unix/Linux ...

weixin_27945229的博客 899

保姆级讲解 Apache服务器的配置与管理

Apache(或httpd)服务,是Internet上使用最多的Web服务器技术之一,通俗来讲就是一个用于搭建网站的服务。http:超文本传输协议,通过线路以明文形式发送,默认使用80端口/TCPhttps:经TLS/SSL安全加密的超文本传输协议,默认使用443端口/TCP。

熙灿 WaitAyaka CSDN B站 贴吧同名 2万+

linux apache服务器优化建议整理(很实用)

apache服务器的time_wait过多 fin_wait1过多等问题 通常表现为apache服务器负载高,w命令显示load average可能上百,但是web服务基本没有问题。同时ssh能够登陆,但是反应非常迟钝。 原因:最可能的原因是httpd.conf里面keepalive没有开,导致每次请求都要建立新的tcp连接,请求完成以后关闭,增加了很多 time_wait的状态。另,...

weixin_34185560的博客 282

linux 内核参数优化

Sysctl命令及linux内核参数调整 一、Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现。 命令格式: sysctl [-n] [-e] -w variable=value sysctl [-n] [-e] -p (default /etc/sysctl.conf) sysctl [-n] [-e] –a 常用参数的意义: -w 临时改变某个指定参数的值,如 # sysctl -w

一口Linux的专栏 1148

通向架构师的道路(第三天)之apache性能调优

一、总结前一天的学习 在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中,还讲述了Http服务器、App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们的W...

fulerbakesi 747

Aache 调优

隐藏 apache 版本信息 实验环境: 操作系统: CentOS 7.6 apache 版本:httpd-2.4.37 源码包编译安装位置: apache: /usr/local/apache2.4-xuegod httpd-2.4.37 程序包下载地址:https://mirrors.aliyun.com/apache/httpd/httpd-2.4.46.tar.gzhttps://mirrors.aliyun.com/apache/httpd 模拟黑客根据查看出来版本号可以,查找漏洞:Apach

538

LinuxApache,MySQL性能优化 (高并发优化)

apache优化 查看apache 工作模式: prefork httpd -V 1: 新增 /etc/httpd/conf.d/httpd-mpm.conf <IfModule mpm_prefork_module> ServerLimit 1000 StartServers 30 MinSpareServers 30 MaxSpareServers 45 MaxClients 1000 MaxRe

qq_34832347的博客 557

Apache参数及优化

Apache参数及优化 ServerTokens OS # 隐藏系统和软件版本信息 注释则显示 ServerRoot "/etc/httpd" # 软件主目录 PidFile run/httpd.pid # apache启动文件PID Timeout 60 #不论接收或发送,当持续连接等待超过60秒则该次...

weixin_34292959的博客 167

通向架构师的道路之apache性能调优

容易看出,点击率越大。这 是一个波浪型的(或者也可以说是锯齿型的)趋势图,随着VU数量的一点点增加,我们的内存使用数会不断的增加,但是JVM的垃圾回收是自动回收机制的,因 此如果你的JVM如上述样的趋势,内存上涨一段时间,随即会一点点下落,然后再上涨一点,涨到快到头了又开始下落,直到最后你的VU数量全部下降下来时, 你的JVM的内存使用也会一点点的下降。就好比你有个1MB的带宽,你传的东西是超过4MB,你要它 在2秒内跑完理论速度也做不到啊,对吧,所以有些报表或者数据,光前面传输时间就不止两秒了。

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 514

Apache配置(转载)

  Apache配置   http://grid.tsinghua.edu.cn/home/liulk/publish/computer/ApacheConfig.html Linux Apache Web 服务器终极教程作者:佚名 文章来源:internet 根据著名的WWW服务器调查公司所作的调查,世界上百分之五十以上的WWW服务 器都在使用Apache,是世界排...

zhyiwww 455

Linux运维webApache网页的优化和安全配置

文章目录前言一、APache优化项二、具体优化项目的部署1.网页压缩2.隐藏版本消息总结 前言 在创建完毕apache时,大多使用的是默认配置,虽说可以使用 但是在使用体验和安全性方面不是非常好 尤其是在安全性上基本上没有太大的安全性能。 一、APache优化项 主要包括 配置网页压缩 配置网页缓存 工作模式的选择与参数优化 配置隐藏版本号 配置防盗链 二、具体优化项目的部署 1.网页压缩 先查看是否有安装mod_deflate 显示并没有安装 先来安装这个模块 注意需要编译安装 先关闭http服务 去到

weixin_49172531的博客 301

LinuxApache服务的启动、停止、重启

1.查看系统是否有httpd cd /etc/rc.d/init.d/ 一些linux版本预置了Apache,并且已经开启服务,所以先检查系统中是否已经存在httpd的服务 ps -ef|grep httpd 没有就进行安装,这里直接简单的使用yum安装 yum list httpd   yum install httpd 2.一些操作 使用httpd -v查看已经安...

lin252552的博客 5126
上一篇: 读取apache的共享内存
下一篇: A Threshold Autoregressive Model for Software Aging
chenxe69
博客等级 码龄21年 0粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值