apache调优

   关于调优可以围绕着cpu、内存、i/o、网络这四个方面进行调优。其实不管是apache还有nginx都是基于这几个方面进行调优。

   关于cpu方面

   可以对apache的配置文件进行修改

   vim /etc/httpd/conf/httpd.conf

  <ifmodulle prefork> ------ apache进程模式(比线程模式安全 但是消耗cpu )

   StartServers 8 ---------- 服务启动时的服务进程数目

   MinSpareServers 5 ------- 服务进程最小数目不得小于5

   MaxSpareServers 20 ------ 服务进程的最大数目不得大于20

   ServerLimit 256 --------- 和maxclients设置一样

   MaxClients 256 ---------- 服务器最多允许256个人同时在线(进程下的子进程)

   MaxRequestsPerChild  4000--- 每个进程最多同时处理4000个网页请求   


   ****** 如果要使用线程的话 建议使用nginx******


 

  内存、I/O

  

  

浅析apache调优_调优

applications   应用层 

  文件描述符(fd) 打开或新建一个文件时都会创建一个文件描述符 如果fd没有了 即使有空间也   不能创建文件   


  文件描述符默认是1024个


  可以修改 /etc/security/limits.conf

  在末尾添加*   soft(软限制) nofile 102400(描述符个数) 软限制:超过这个数会警告

            *   hard(硬限制) nofile 102400     硬限制:超过这个数直接报错,并不让创建


  如果文件在内存中打开 rm -rf 删除了文件后 也可以通过fd进行恢复数据


 ******在这层还需要熟练掌握lsof命令******

 lsof -p 1(pid) -----查看1进程打开了那些文件

 lsof -f -- /dev/initctl    ----- 查看/dev/initctl被哪个进程调用

 losf -d  +/目录  -------查看目录下文件被那些进程调用

 ****************************************


 file system   文件系统

 文件系统中包括两点:1、i节点

                     2、block块


i节点是数据的源数据 它包括atime  访问时间  只要访问这个文件就会改变atime

                          ctime  修改时间  源数据(属主、组、内容修改、访问时间)修改

                          mtime  改变时间  数据内容修改


调优时我们可以不记录atime 来节省I/O 从而提高速度

mount /dev/sda3 /var/www/html -o noatime


BLOCK块

dumpe2fs -h /dev/sda3 查看sda3盘的i节点 block块

浅析apache调优_apache_02

 

Inode count -------i节点的数量

Block count --------block数量

Reserved block count ---------保留的block数,只有root有权限

Free blocks -------空闲的block块

Free inodes --------空闲的i节点


page cache 页面缓存 (把文件的请求缓存到内存中,下次访问从内存中读取,使访问速度加快)


这个如果要优化就只能加内存了


需要记住  Buffers 缓存小数据(i节点)

                Cached 缓存大数据


free -m 查看内存命令

pagecache的工作原理是 使用自己的内存 如果自己本身的内存不够了,去抢缓存的(此时会自动同步脏数据),如果还不够就要去借swap的了(尽量不要去借swap的内存,占用swap会极大的降低服务器性能)


干净数据 ----- 内存中与磁盘上数据一样的

脏数据 ------- 内存中与磁盘上不同的数据(内存中更新了而磁盘上未更新)


使用sync命令 可以强制同步脏数据

系统中的pdflush进程(每隔一段时间自动同步)是用来同步脏数据的

 


Echo 3 > /proc/sys/vm/drop_caches

清除内存中的干数据,来释放内存


 

Block I/O layer:Request Queues 输入输出

这一层起到的是承上启下的作用 之前的操作全是在内存中的 这层是直接定位到磁盘上了


使用的是电梯算法 就像坐电梯一样 他会把数据进行排序以及同类的数据进行合并 就如同坐电梯 如果有三个人,第一个去2层一个之后来了一个去3层最后的一个还去2层,当到了2层后他们两个人会同时下去。


这一层有4种针对服务的算法:

 

Noop ------------固态硬盘算法 优点节省cpu

Anticipated ------预期算法,吞吐量好,nfs samba vfstp文件服务器

Deadline ---------实时响应性好,apache web服务器

Cfq ---------------默认完全公平队列 进程特多都能分到资源


通过echo ‘算法' >  /sys/block/hda/queue/scheduler修改

    cat  /sys/block/hda/queue/scheduler 查看


我们可以通过top命令里查看 %wa的值来判断是不是I/O问题。数值大证明有问题


还可以通过安装iostat命令: iostat 1 3 -------1秒一次刷新3次



伪设备层可以做read0提速 以及lvs




网络

根据你的pv量看看是否需要增加带宽