`

[精华] 针对Web服务器总体优化

 
阅读更多
一、文件系统
在fstab里加入noatime,如
#cat /etc/fstab
/dev/sda1          /home                  ext3    noatime,defaults        1 2
reboot或者重新mount生效
二、Tcp优化
在/etc/sysctl.conf里加入
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 3
net.ipv4.tcp_syncookies = 1 #启用syncookies
        net.ipv4.tcp_max_syn_backlog = 8192 #定义backlog队列容纳的最大半连接数
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
老实说,对于sysctl.conf究竟能不能用起来还真不知道,因为我是没用起来,虽然内核里面是支持的 = =b
三、虚拟内存优化
/etc/sysctl.conf
        vm.lower_zone_protection = 100
四、I/O调度器
在grub.conf的相应启动选项里加入elevator=deadline,如:
kernel /vmlinuz-2.6.6 ro root=/dev/sda6 elevator=deadline
这里用了Deadline的I/O调度器,它比系统默认的AnticipatoryI/O调度器更为小巧,在数据吞吐量非常大的数据库系统中表现得更有优势。
五、内核源代码参数修改
修改/usr/src/linux/include/linux/posix_types.h
#define __FD_SETSIZE 1024 � 65536 
设置fd_set支持的最大数量
 
修改/usr/src/linux/include/linux/fs.h
#define INR_OPEN 1024 � 65536
#define NR_FILE 8192 � 65536
#define NR_RESERVED_FILES 10 � 128
设置最大打开文件数量(TCP连接数量)

修改/usr/src/linux/include/net/tcp.h
#define TCP_TIMEWAIT_LEN (60*HZ) � 1*HZ
#define TCP_SYNACK_RETRIES  5 � 3 
设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上
也是减少重试时间

make menuconfig中,去掉没用的选项,打开以下选项的开关:
High Memory Support (支持4GB以上内存)
Symmetric multi-processing support (支持多CPU)
TCP syncookie support (可以防DOS)
设置文件打开数等的其他方法(好处就是可以不重新编译内核)
在 /etc/init.d/sshd里加入(统一加在. /etc/rc.d/init.d/functions行后面)
ulimit -n 65535 >;/dev/null 2>;&1

ulimit -u 16384 >;/dev/null 2>;&1

重起sshd:nohup /etc/init.d/sshd restart &
BTW:其实limits.conf不好,因为他需要root su - user遗传给普通用户
如果直接远程登陆是没效果的
六、apache
1、安装:采用worker线程工作模式
./configure --prefix=/prefix

--enable-mods-shared=all

--enable-deflate

--with-mpm=worker
chmod +s /prefix/bin/httpd #允许普通用户也可以启动apache
2、配置:httpd.conf
Timeout 60

KeepAlive On

MaxKeepAliveRequests 150

KeepAliveTimeout   5



StartServers         3

MaxClients         3200   #支持3200个客户端哦

ServerLimit        32

MinSpareThreads     50

MaxSpareThreads     250

ThreadLimit   200

ThreadsPerChild     100

MaxRequestsPerChild 0



#上面的几个参数对机器要求比较高,如果是比较差的机器,每台机1000个连接最多了,你可能要重新设置参数,我的机器是DELL 2850



UseCanonicalName Off

HostnameLookups Off

ServerSignature Off



wolfop 回复于:2004-12-10 16:28:23

用来好多激进的方法啊,apache2的work方式现在稳定了吗?

killua 回复于:2004-12-11 13:08:44

引用:原帖由 "wolfop"]用来好多激进的方法啊,apache2的work方式现在稳定了吗?
发表:


我是在前两个月把apache2的工作模式换成worker方式的,都没有问题哦
而且经过我这样升级后,性能提升25%左右,真的,我测试过的

帖子上有个东东漏掉了,要apache支持3200个客户端,默认最大支持1024(64*16)个客户端,所以必须修改apache的源代码树下的server/mpm/worker/worker.c
把 #define DEFAULT_THREAD_LIMIT 64  -->; 128 #每个子进程中包含的线程数
   #define DEFAULT_SERVER_LIMIT 16  -->;  32  #最大的子进程总数

注意,不要把这两个值设得太高,超过系统的处理能力,那就事与愿违了
现在我的机子能承受每天350W的访问量,高峰期的load最多到2左右

Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients

大家可以根据自己的实际情况调试一下的。祝大家愉快。  



原文链接:http://bbs.chinaunix.net/viewthread.php?tid=464181
转载请注明作者名及原文出处
分享到:
评论

相关推荐

    WEB服务器的优化方法.doc

    Web服务器的优化是一个复杂而关键的任务,涉及到网络...必须深入理解服务器工作原理,针对性地实施优化措施,以提高整体Web系统的性能。这涉及到网络配置、中断处理、并发管理等多个层面,需要全面考虑以达到最佳效果。

    web性能优化(服务器优化).pdf

    根据提供的文件内容,我们可以从中提取有关web性能优化(服务器优化)的知识点。文件内容虽然有部分OCR扫描错误和不连贯,但我们可以识别出关键概念和组件,并将它们串联成一篇详尽的web服务器优化知识介绍。 首先...

    web性能优化(服务器优化).doc

    ### Web性能优化(服务器优化)知识点详解 #### 一、提高服务器并发处理能力 服务器并发处理能力直接影响到网站能够承受的访问量。为了提高这一能力,通常需要关注以下几个方面: - **多执行流体系设计**:操作...

    安卓版本下的Web服务器

    3. **CherryPy**: CherryPy是一个Python Web服务器和Web框架,虽然主要针对桌面环境,但也有用户成功地将其移植到安卓。CherryPy提供了高度的灵活性和控制权。 4. **AndroHTTPD**: AndroHTTPD是专为安卓设计的Web...

    STM32实现Web服务器

    STM32实现Web服务器是一个将微控制器技术与网络通信相结合的课题,对于嵌入式系统开发者来说具有重要的学习价值。STM32是意法半导体公司推出的一款基于ARM Cortex-M内核的微控制器系列,广泛应用于各种嵌入式系统...

    C-Web-Server源码 经典的C语言web服务器

    6. **性能优化**:对于高性能Web服务器,内存管理、缓冲池、连接复用等都是提升性能的关键。C-Web-Server可能包含这些优化措施,以提高服务器的吞吐量和响应速度。 通过研究C-Web-Server的源码,我们可以了解到一个...

    VB6.0编写的简易WEB服务器

    在实践过程中,你可能会遇到的问题包括但不限于:如何正确处理多线程以应对并发请求、如何处理错误和异常、如何优化服务器性能等。这些都是进阶学习的方向。 总的来说,VB6.0编写的简易WEB服务器项目为初学者提供了...

    多线程Web服务器的设计与实现

    7. **性能优化**:除了基本功能外,还会涉及到服务器性能的优化,如线程池的使用,减少线程创建和销毁的开销;使用非阻塞I/O(NIO)提高并发能力;以及利用缓存技术减少磁盘I/O。 8. **实验收获**:完成这个实验后...

    web前端性能优化

    针对web前端性能低下的问题,王成、李少元、郑黎晓、缑锦、曾梅琴、刘慧敏等学者系统地提出了一套旨在提高网页加载速度、呈现速度和用户体验的完整Web前端性能优化解决方案。该方案涵盖了服务器端优化、HTML优化、...

    c#简单web服务器开发实例

    在本文中,我们将深入探讨如何使用C#语言开发一个简单的Web服务器,主要基于`HttpListener`组件。`HttpListener`是.NET Framework提供的一种基础网络通信类,它允许我们监听HTTP请求,并对这些请求做出响应。 首先...

    五分钟搭建Web服务器和论坛

    搭建Web服务器和论坛是互联网应用开发的基础步骤,对于新手来说,快速上手并理解这个过程至关重要。本教程将详述如何在五分钟内高效地完成这一任务。以下是你需要知道的关键知识点: 1. **Web服务器**: Web服务器是...

    (linux下C语言实现)简易web服务器

    2. **多路复用I/O**:为了处理多个并发客户端请求,Web服务器通常会采用多路复用I/O模型,如`select()`, `poll()`或`epoll()`。这些函数可以让服务器监控多个套接字,一旦有任何活动,就可以立即响应,提高服务器的...

    VC++实现基于MFC的Web服务器程序

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库在Visual C++ 6.0环境下实现一个简单的Web服务器程序。MFC是微软为C++开发人员提供的一套面向对象的类库,它封装了Windows API,使得Windows...

    C#web服务器.zip

    本项目“C# Web服务器”是一个针对初学者的示例,它可以帮助你理解如何利用C#来构建一个简单的Web服务器。这个压缩包包含了一个名为"SimpleWebServer-src"的源代码文件夹,里面应该是实现Web服务器功能的C#代码。 *...

    Web服务器C++实现

    10. **性能优化**:为了提高服务器性能,可以采用预读、缓存、异步I/O、连接池等技术。此外,还可以考虑使用非阻塞I/O或多路复用技术,如select、poll或epoll。 在项目"WebServer_src"中,你可以找到实现这些功能的...

    WEB服务器漏洞扫描

    【WEB服务器漏洞扫描】是一种针对网络服务器安全性进行检查的重要手段,它主要目的是发现并修复可能导致数据泄露、系统被攻击或恶意软件感染的弱点。在信息化社会中,Web服务器作为互联网服务的核心,承载着大量敏感...

    java语言写的web服务器

    虽然这是一个简单的Web服务器,但实际部署时可能需要考虑端口设置、日志记录、安全性(如HTTPS支持)和性能优化等方面。 9. **测试与调试**: 对Web服务器进行单元测试和集成测试是必要的,以确保其正确性和稳定...

    Web性能优化:服务器性能优化.docx

    Web性能优化:服务器性能优化.docx

Global site tag (gtag.js) - Google Analytics