jinlinlucky:二、多路处理模块的配置说明|@||@|Apache HTTP服务器是一个强大的、灵活的能够在多种平台、不同环境下运行的Web服务器。由于不同的平台和不同的环境经常产生不同的需求,为了达到同样的最佳效果则需要采取不同的实现方法, Apache的模块化设计就可以很好的适应大量不同的环境。使得网站管理员能够在编译和运行时凭借载入不同的模块来决定服务器的附加功能。Apache的多路处理模块(MPM)就是用于选择处理网络端口绑定、接受请求并指派子进程处理来自客户端的请求。|@||@|默认的MPM|@||@|下表列出了不同操作系统上默认的MPM。如果编译时没有进行选择,这将是默认选择的MPM。|@||@|操作系统名称|@|MPM名称|@||@|BeOS|@|beos|@||@|Netware|@|mpm_netware|@||@|OS/2|@|mpmt_os2|@||@|Unix|@|prefork|@||@|Windows|@|mpm_winnt|@||@||@|1、prefork.c模块(一个非线程型的、预派生的MPM)|@||@|prefork.c模块是由一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache设置了一些备用的(spare)或者是空闲的子进程来处理即将接收的请求,这样可以避免服务器接收到请求后在创建子进程。在Unix系统中,父进程通常以root身份运行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group参数就是用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取的权限,但是对服务内容之外的其他资源最好拥有尽可能少的权限。|@||@|【配置示例】|@||@||@||@|StartServers       8|@||@|MinSpareServers     5|@||@|MaxSpareServers   20|@||@|ServerLimit       400|@||@|MaxClients       256|@||@|MaxRequestsPerChild 4000|@||@||@||@||@|【参数说明】|@||@|1.ServerLimit|@|默认的MaxClient最大是256个线程,如果想设置更大的值,就需要修改ServerLimit这个参数。例子中的400是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。|@||@|2.StartServers |@|指定服务器启动时建立的子进程数量,因为子进程的数量动态的取决于负载的轻重,所以一般没有必要调整这个参数,prefork模式默认为5。|@||@|3.MinSpareServers |@|指定空闲子进程的最小数量,所谓空闲子进程是指没有正在处理请求的子进程。默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程,只有机器在非常繁忙的情况下才需要调整这个参数。|@||@|4.MaxSpareServers |@|设置空闲子进程的最大数量。默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。如果该参数的值设置比MinSpareServers小,Apache则会自动将其修改成"MinSpareServers+1"。|@||@|5.MaxClients|@|指可以服务于客户端请求的最大子进程数量,即限定同一时间客户端最大接入请求的数量,默认值为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个连接被释放,队列中的请求将得到服务。|@||@|6.MaxRequestsPerChild |@|每个子进程在其生存期内允许处理的最大请求数,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。这个参数也可以理解成控制服务器杀死旧进程产生新进程的频率。|@|注意:|@|从系统稳定性来考虑将MaxRequestsPerChild设置成非零有两个好处:|@|1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。|@|2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。|@||@|【工作原理介绍】|@||@|首先服务启动后会创建以StartServers个数的进程,然后等待来自客户端的请求。我们这里先假设从客户端来了大量的请求,这时Apache服务器会根据自身的负载情况自动创建新进程,如果服务器一直没有空闲进程那么它就会一直创建新进程,直到满足MaxClients和ServerLimit设置的最大值。如果来自客户端的负载没有那么大,Apache服务器将会根据MinSpareServers、MaxSpareServers和MaxRequestsPerChild设置的值来杀掉多余的进程。其中每个进程在某个确定的时间只能维持一个连接。|@||@|【小结】|@||@|上面叙述的这些参数中,对系统性能影响较大的有两个:MaxClients 和ServerLimit。这个两个参数主要影响Web服务器处理客户端请求的能力,它们决定着服务器创建用来处理请求的进程的最大值。如果来自客户端的请求总数已经达到系统创建进程的最大值(可通过ps -ef|grep http|wc –l来确认),那么后面来的请求就要排队,直到某个已处理请求完成。这就是应用系统资源还很富余而HTTP访问却很慢的主要原因。如何找出这个两个参数的最佳值需要综合很多因素,但一般情况下可以参考系统性能测试结果和Web服务器的系统资源。|@||@|注意:prefork模式下创建较多的进程将会占去大量系统内存,如果MaxClients和ServerLimit设置过大时可能会造成Web服务器崩溃。|@||@|2、worker.c模块(支持混合的多线程多进程的多路处理模块)|@| worker 模块使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,worker 模式是个比较好的选择,因为它的内存使用比prefork要低得多。但worker模式也有不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉"。由于线程共享内存空间,所以一个进程在运行时必须被系统识别为"每个线程都是安全的"。|@||@|【配置示例】 |@||@||@||@|StartServers     2|@||@|MaxClients     400|@||@|ServerLimit     12|@||@|MinSpareThreads   25|@||@|MaxSpareThreads   75|@||@|ThreadsPerChild   25|@||@|ThreadLimit     75|@||@|MaxRequestsPerChild 0|@||@||@||@||@|【参数说明】|@||@|1.ServerLimit |@|服务器允许配置的进程数上限。这个参数和ThreadLimit结合使用便决定了MaxClients所能设置的最大值。任何在重启期间对这个参数的改变都将被忽略,但对MaxClients的修改却会生效。|@||@|2.ThreadLimit|@|每个子进程可设置的线程数上限,这个参数决定了每个子进程可创建线程的数,即ThreadsPerChild的上限。任何在重启期间对这个参数的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是"64".|@||@|3.StartServers |@|服务器启动时建立的子进程数,默认值是"3"。|@||@|4.MinSpareThreads |@|最小空闲线程数,默认值是75。MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。|@||@|5.MaxSpareThreads |@|设置最大空闲线程数。默认值是250。MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的,在Apache的 worker模式下是要求大于等于 MinSpareThreads与ThreadsPerChild之和来自动修正你设置的值。|@||@|6.MaxClients |@|允许同时接收客户端最大请求的数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候队列。默认值是400,即16 (ServerLimit)乘以25(ThreadsPerChild)。因此需要增加MaxClients的时候,你必须同时增加 ServerLimit的值。|@||@|7.ThreadsPerChild |@|每个子进程建立常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。|@||@|8.MaxRequestsPerChild |@|设置每个子进程在其生存期内允许提供服务的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。|@||@|将MaxRequestsPerChild设置成非零值有两个好处:|@|1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。|@|2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。|@|注意|@|对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。|@||@|【工作原理介绍】:|@||@|worker的工作原理是:先由主控制进程创建“StartServers”个子进程,每个子进程中含有“ThreadsPerChild”个线程,各个线程独立地处理来自客户端的请求。同Prefork一样,为了不在请求到来时在去创建线程,MinSpareThreads和MaxSpareThreads决定了最少和最多空闲线程数;随着负载逐渐增大,而现有子进程中的线程不能满足负载时,主控进程将按照“ServerLimit”和“MaxClients”的限制去创建新进程,如果“ServerLimit”达到上限而ServerLimit* ThreadsPerChild ThreadsPerChild。如果“ServerLimit”未达到上限而“MaxClients”达到上限,那么服务器将不采取任何行动。倘若负载逐渐减小,那么Apache服务器将根据实际情况去消减线程或进程。|@||@|【小结】|@| 在worker模式下MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况做相应调节。 而ThreadsPerChild参数是最影响性能的一个,因为worker模式下所能同时处理的请求总数是由子进程总数与ThreadsPerChild之积来决定的。它的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是20000。。注意,不要把这两个值设得太高,如果超过系统的处理能力,会使系统很不稳定,这个值最好参考性能测试的结果来设,同时子进程总数与ThreadsPerChild之积应该略大于MaxClinets。|@||@||@||@|三、配置静态文件|@||@|目前基于B/S结构的Web页面有动态和静态两种形式,其中动态页面需由服务器的解析器进行解析,通常还需连接数据库,进行数据库存取操作,最后形成HTML语言信息包反馈给浏览者;而静态页面,则无须解析,无须连接数据库,直接反馈给客户端就可以。  |@||@|这里说的静态文件就是指在服务器端无需进行任何处理,就可以直接反馈给浏览器的文件,例如:HTML、JS,CSS、JPG、BMP等等。|@||@|将应用系统中的静态文件配置到Apache服务器上有几大好处,首先从客户角度来看Web页面的响应时间提高了,其次从系统资源来看应用服务器能专心处理动态文件,所以充分发挥了它的效能,再次从系统稳定性来看Apache服务器屏蔽了所有静态文件的请求,减轻了应用服务器的压力从而降低了由大访问量带来宕机的风险。|@||@|【配置示例1】|@||@|Alias /images/ "/home/hrdc/images/"|@||@||@||@|Options Indexes FollowSymLinks|@||@|AllowOverride None|@||@|Order allow,deny|@||@|Allow from all|@||@||@||@|#配置图片请求映射,与CSS,JS的配置类似。|@||@||@||@||@||@| WebLogicCluster 192.64.96.18:8018,192.64.96.11:8011|@||@| MatchExpression /file/*|@||@| MatchExpression *.jsp|@||@| MatchExpression *.jsf|@||@| MatchExpression *.rtf|@||@| MatchExpression *.xls|@||@| MatchExpression *.doc|@||@| MatchExpression /console*|@||@||@||@||@||@|#配置Webloig模块中的参数。|@||@||@|【关键参数说明】|@||@|l VirtualHost|@||@|虚拟主机。|@||@|【说明】|@||@|在这个参数内可以模仿一个Web服务配置众多参数,即在和中配置一组仅作用于特定虚拟主机的参数。|@||@|示例|@||@||@|ServerAdmin   hrdc.zh@ccb.cn |@|DocumentRoot /home/hrdc|@|ServerName   hrdc.ccb.cn|@|ErrorLog logs/host.foo.com-error_log|@|TransferLog logs/host.foo.com-access_log|@| |@||@||@|注意:每个虚拟主机必须对应不同的IP地址、端口或是不同的主机名。|@||@|中定义的监听地址只代表虚拟主机并不是指定Apache服务的监听地址。指定Apache监听地址的参数则是Listen。|@||@|l IfModule|@||@|根据指定的模块是否启用为条件来决定是否进行处理。|@||@|【语法】|@||@| ... |@||@|【说明】|@||@|在该参数中配置的表达式为真的时候才进行处理。如果为假,所有其包含的参数都将被忽略。|@||@|段中的表达式可以为以下两种方式之一来表达:|@||@|·     module |@||@|·     !module |@||@|第一种情况表示,在和之间的配置参数仅当module被载入后才被执行。此模块可以是编译时静态链接的核心模块或是使用LoadModule指令动态载入的模块。第二种情况则表示,仅当module没有载入时才执行参数内的配置处理。|@||@|module可以是模块的标识符或者是编译模块时的文件名。在上面的例子中,mod_weblogic.c就是编译模块时的文件名。|@||@|注意:配置段是可以嵌套的,从而可以实现简单的多模块测试。|@||@|【小结】|@||@|现在再看一下“配置示例1”中关于Weblogic的配置,其中第一行是用于指定集群中托管服务器的地址。而下面的“MatchExpression”表示当URL匹配上后面的表达式时,Apache服务器会把该请求转给Weblogic处理。从配置中可以看出如果有一个“http://192.23.108.2:8022/images/logon.jpg”这样的请求,它是不会转发到Weblogic集群上的。|@|

mysql from_unixtime(_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME()相关推荐

  1. mysql from_unixtime_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME() ...

    这几天写代码,反复用到将日期时间字段转化成数字串和日期格式字符串的情况,感觉自己还处于壹知半解之中,索性花点时间查下相关资料,基本弄明白了 MySQL 中两个常用的日期函数的用法,记录于此,作为笔记供 ...

  2. MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME()

    这几天写代码,反复用到将日期时间字段转化成数字串和日期格式字符串的情况,感觉自己还处于壹知半解之中,索性花点时间查下相关资料,基本弄明白了 MySQL 中两个常用的日期函数的用法,记录于此,作为笔记供 ...

  3. mysql 函数用还是不用_Mysql中日期和时间函数应用不用求人

    Mysql中日期和时间函数应用不用求人 2008-05-23 17:41· 稿源:互联网 TIME_FORMAT(time,format) 这象上面的DATE_FORMAT()函数一样使用,但是for ...

  4. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  5. PHP求日期函数公式,PHP中日期和时间函数简介

    PHP中日期和时间相关函数简介 一.UNIX时间戳 在当前大多数的UNIX系统中,保存当前日期和时间的方法是:保存格林尼治标准时间从1970年1月1日零点起到当前时刻的秒数,以32为整列表示.1970 ...

  6. oracle中用于返回日期和时间,oracle中日期和时间函数的使用

    日期和时间函数的使用 1,           SYSDATE:此函数用于返回系统当前日期 2,           ADD_MONTHS(日期,n):返回指定日期之前或之后的n个月所对应的日期(n为 ...

  7. mysql中不要 秒的函数_Mysql中日期和时间函数应用不用求人 | 很文博客

    对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: my ...

  8. repeat mysql翻译_MySQL数据库中系统函数repeat有哪些功能呢?

    摘要: 下文讲述MySQL数据库中系统函数repeat的功能说明,如下所示: 系统函数repeat的功能: repeat函数的功能: 重复前面字符串指定次数 repeat语法: repeat(str, ...

  9. mysql取数据库时间函数_MySQL数据库—日期与时间函数

    一. 日期和时间函数 函数的概念:按指定格式输入参数,返回正确结果的运算单元 1. 返回当前日期:curdate() current_date() current_date()+0可以将当前日期转换为 ...

最新文章

  1. pytorch 训练过程acc_【图节点分类】10分钟就学会的图节点分类教程,基于pytorch和dgl...
  2. 从虚拟化、统一映射和自动化看09年法规遵从趋势
  3. [ZJOI2019]线段树
  4. canvas绘制圆形
  5. python中文编码-Python中文乱码(转)
  6. 历史客人-报表记录信息
  7. 二分查找(循序渐进由0到1掌握二分)
  8. typescript的类型描述_一文学懂TypeScript的类型
  9. 1003. 检查替换后的词是否有效
  10. 初学软件测试看什么书?
  11. 蓝军HVV实用工具和网站总结
  12. think in java 读书笔记 2 —— 套接字
  13. python : os.path 相关操作
  14. 7.3 环境(Condition)
  15. win32com excel转pdf
  16. 计算机接口cad图,(有全套CAD图纸)USB接口插件弯曲模具设计.rar
  17. matlab 定义结构体数组,结构体数组及其定义和使用,C语言结构体数组详解
  18. 按Right-BICEP要求的对任务二的测试用例
  19. 采集网易云上面的MV保存方法
  20. w7系统桌面没有计算机图标不见了,桌面上我的电脑图标不见了怎么办

热门文章

  1. 第15章 音乐可视化(《Python趣味创意编程》教学视频)
  2. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01
  3. 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年...
  4. JavaScript命名冲突不可避免?
  5. 为什么 MapReduce 再次流行起来了?
  6. C++落选,2021年最想学习的五大编程语言
  7. 理解了这三点,才敢说自己会写Python代码
  8. 他曾一举击败英伟达,却因坚持研发背负骂名
  9. 百密一疏,防不胜防,细数那些大型数据库建设过程中绕不开的坑
  10. 「AI原生」时代来临?百度智能云提出AI-Native,发布新一代云基础架构「太行」