前言
要理解浏览器和apache之间的连接超时问题,需要先明白http的keep-alive属性。先简单介绍keep-alive,您可以从网上查找更加详细的介绍。
浏览器和apache都是基于http协议的。而http协议中的keep-alive属性通俗的解释就是浏览器和apache第一次建立TCP连接,传输完数据不会立刻断开这个TCP连接,而是继续等待下一个请求。保持一段时间(keep-alive-time)后才会断开连接。
下面做个测试,查看apache在打开keep-alive支持和关闭keep-alive支持时候的TCP连接状态。
服务端 | 虚拟机上的Centos |
客户端 | 本机上IE6浏览器 |
服务端地址 | 192.168.212.128 |
客户端地址 | 192.168.212.1 |
访问的文件test.html | <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="./main.css" /> <script type="text/javascript" src="./main.js"></script> </head> <body> 您知道吗?A处和B处的色值是一样的。<br/> <img src="./main.jpg"> </body> </html> |
首先关闭apache的keep-alive参数,打开httpd.conf。
打开浏览器访问apache。使用netstat命令查看连接状态。
#netstat –nt|grep –i ’80′
可以看到四个连接,因为本地访问速度很快,只能抓取到TIME_WAIT得状态。那一个test.html网页为什么会有四个连接呢?
看test.html的内容可以知道有:
1,main.css 文件
2,mian.js 文件
3,main.jpg 图片
4,本身的test.html文件
所以有四个连接。
再看看关闭apache的keep-alive支持后的连接状态。
重启服务器,浏览器访问test.html,在查看连接。
#service httpd restart
#netstat –nt|grep –i ’80′
可以看到只有一个连接。而且这个连接状态是ESTABLISHED。我们在httpd.conf中设置了keepAlliveTimeout=15,所以连接建立后15秒后才关闭连接。
测试得到的结论
如果关闭apache的keep-alive属性,访问的页面中的(上例中test.html)所有文件,包括js,css,图片等等都要建立新的TCP连接。有多少引用文件就建立多少个连接。具体多少个文件可以使用火狐的BUG工具查看。
上图中最下面的11个请求就是该网页中需要引用的文件数。
如果开启apache的keep-alive属性,访问的页面中的(上例中的test.html)所有文件,包括js,css,图片等等只建立一个TCP连接,按照顺序传输所有数据。所有数据传输完等待KeepAliveTimeout =15秒后再关闭该连接。
网上看到的参考:
假如当前Apache每秒响应100个用户访问,KeepAliveTimeOut=5,此时httpd进程数就是100*5=500个(prefork模式),一个httpd进程消耗5M内存的话,就是500*5M=2500M=2.5G,夸张吧?当然,Apache与Client只进行了100次TCP 连接。如果你的内存够大,系统负载不会太高,如果你的内存小于2.5G,就会用到Swap,频繁的Swap切换会加重CPU的Load。
现在我们关掉KeepAlive,Apache仍然每秒响应100个用户访问,因为我们将图片、js、css等分离出去了,每次访问只有1个 request,此时httpd的进程数是100*1=100个,使用内存100*5M=500M,此时Apache与Client也是进行了100次 TCP连接。性能却提升了太多。
浏览器的连接超时
每个浏览器都有默认的连接超时时间。IE6的默认时间为60分钟。
这个值可以通过注册表修改。
1,打开注册表:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings。
2,增加一个DWORD值的项,命名为ReceiveTimeout,设置1000。该值的默认单位是毫秒,这里设置的1秒时间。
从浏览器开始访问网站开始,1秒后关闭连接。(设的值有点极端,但是方便展示)。
重启浏览器访问网站。
服务端 | 虚拟机上的Centos |
客户端 | 本机上IE6浏览器 |
服务端地址 | 192.168.212.128 |
客户端地址 | 192.168.212.1 |
访问的文件index.php | <?php echo date('H:i:s',time()); sleep(10); ?> |
可以看到浏览器显示找不到服务器,但是访问刚才的test.html是可以访问的。
访问index.php显示连接不成功。因为index.php中sleep(10)延迟10秒的函数。而IE6的连接超时时间为1秒。所以就连接失败了。
访问test.hml可以成功连接。因为是访问本地服务器,传输速度很快,在IE6的1秒超时时间之内就已经传完全部数据了。
测试得到的结论
IE6的默认连接超时时间为60分。可以通过注册表中ReceiveTimeout值修改该值。
实际作用:使用IE6往服务器上传一个大文件,如果上传时间超过60分钟就会断开连接。
这也是为什么有些网站要专门开发active插件来实现IE6的大文件上传了。用户是不会主动修改这个值的。
apache的连接超时
看apache的配置文件可以看到有个timeout值。
有人会以为这个是apache的连接超时参数。
我们把它设置为timeout =1访问index.php。
看到还是可以访问的,那么这个timeout不是apache的连接超时时间。timeout是apache收到上一个请求和后面一个请求到来之间的最大值。您可以查看浏览器与apache通讯中的TCP连接状态迁移更加准确的明白timeout的值。
那么apache的连接超时时间到底是多少?是什么参数控制呢?
答:apache没有最大连接超时时间,也没有控制连接超时的参数。因为apache是在TCP/IP模型的应用层。
那么服务端是什么控制了浏览器和apache之间的最大连接超时时间呢?
答:linux
测试得到的结论
apache没有最大连接超时时间,也没有控制连接超时的参数。因为apache是在TCP/IP模型的应用层。
linux的连接超时
在linux的系统配置中可以到关于连接时间的有这两个参数。
#sysctl -a|grep time
一个是限制FIN_WAIT状态的超时时间,
一个是限制keepalive连接的超时时间。
结论
linux的默认配置下也没控制浏览器和apache连接超时的参数,只有通过linux的防火墙才能控制apache和浏览器之间连接的最大连接时间。
PHP的操作超时
打开php.ini可以看到两个参数。
max_execution_time:一个php程序执行的最长时间。
max_input_time:一个表单提交的最长时间。
这两个值很重要。我们做个测试:
服务端 | 虚拟机上的Centos |
客户端 | 本机上IE6浏览器 |
服务端地址 | 192.168.212.128 |
客户端地址 | 192.168.212.1 |
访问的文件index.php | <?php for($i = 0;;$i++){ echo date('H:i:s',time()); echo '<br/>'; flush(); } ?> |
max_execution_time | 30 |
访问index.php。
<?php for($i = 0;;$i++){ echo date('H:i:s',time()); echo '<br/>'; flush(); } ?>
30秒后IE死掉了。为什么呢?答:index.php中有死循环。执行到max_execution_time=30秒后php停止了操作。浏览器这边死掉了。
总结
如果从头到尾看完上面的内容,会得出如下结论:
1,在客户端,浏览器控制着浏览器和apache的最大连接超时时间。
2,在服务端(不打开防火墙),linux和apache都不能控制最大连接超时时间,只有php或者mysql等运行程序通过控制自身的执行时间来控制浏览器和apache的最大连接超时时间。
3,在服务端(打开防火墙),linux上的防火墙和php,mysql等共同控制浏览器和apache的最大连接超时时间。
4,这里的浏览器和apache的最大连接超时时间包括TCP连接中的所有状态超时时间的综合。
更多Apache的相关技术文章,请访问Apache教程栏目进行学习!
Atas ialah kandungan terperinci php如何与apache连接超时. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Fungsi utama Apachehttpserver termasuk reka bentuk modular, konfigurasi tuan rumah maya dan pengoptimuman prestasi. 1. Reka bentuk modular melaksanakan fungsi dengan memuatkan modul yang berbeza, seperti penyulitan SSL dan penulisan semula URL. 2. Konfigurasi Host Maya membolehkan beberapa laman web dijalankan pada satu pelayan. 3. Pengoptimuman prestasi meningkatkan prestasi dengan menyesuaikan parameter seperti Serverlimit dan Keepalive.

Apache mengekalkan kebolehsuaian dan daya hidup melalui reka bentuk modular, keserasian dengan teknologi baru, dan pengoptimuman prestasi. 1. Reka bentuk modular membolehkan fungsi tersuai seperti mod_rewrite untuk penulisan semula URL. 2. Serasi dengan pengkomputeran awan dan teknologi kontena, seperti berjalan di Docker. 3. Memperkenalkan modul baru seperti MOD_HTTP2 untuk menyokong protokol HTTP/2. 4. Pengoptimuman prestasi dilakukan melalui pelarasan fail konfigurasi dan pengaktifan cache.

Alasan Apachehttpserver tetap popular adalah seni bina modular, sokongan hosting maya, dan prestasi tinggi dan kebolehpercayaan. 1) Senibina modular membolehkan fungsi lanjutan melalui modul, seperti mod_rewrite dan mod_ssl. 2) Fungsi hosting maya menyokong hosting beberapa laman web pada satu pelayan. 3) Model multi-proses memastikan prestasi tinggi dan kestabilan dalam persekitaran yang berbeza.

Apache adalah perisian pelayan web sumber terbuka yang digunakan secara meluas dalam hosting laman web. Langkah Pemasangan: 1. Pasang menggunakan baris arahan di Ubuntu; 2. Fail konfigurasi terletak di /etc/apache2/apache2.conf atau /etc/httpd/conf/httpd.conf. Melalui sambungan modul, Apache menyokong hosting kandungan statik dan dinamik, mengoptimumkan prestasi dan keselamatan.

Apache masih digunakan secara meluas, tetapi bahagian pasarannya telah menurun dari lebih daripada 50% pada tahun 2010 kepada kurang daripada 30% pada tahun 2023. Kelebihannya terletak pada kestabilan dan kebolehpercayaannya, yang sesuai untuk aplikasi peringkat perusahaan yang memerlukan ciri-ciri ini; Kelemahannya ialah model multi-proses mengambil banyak sumber di bawah kesesuaian yang tinggi, dan NGINX melakukan lebih baik dalam pemprosesan konvensional yang tinggi.

Ciri -ciri teras Apachewebserver termasuk reka bentuk modular, konfigurasi hos maya, tetapan keselamatan dan pengoptimuman prestasi. 1) Reka bentuk modular membolehkan sambungan fleksibel dengan memuatkan modul yang berbeza, seperti mod_rewrite untuk penulisan semula URL. 2) Konfigurasi hos maya membolehkan beberapa laman web dijalankan pada satu pelayan. 3) Tetapan keselamatan menyediakan penyulitan SSL/TLS dan kawalan akses. 4) Pengoptimuman Prestasi melibatkan membolehkan pemeliharaan, menyesuaikan konfigurasi MPM, dan membolehkan cache.

Sebab-sebab kepentingan berterusan Apache termasuk kepelbagaian, fleksibiliti, sokongan komuniti yang kuat, penggunaan yang meluas dan kebolehpercayaan yang tinggi dalam aplikasi peringkat perusahaan, dan inovasi berterusan dalam teknologi baru muncul. Khususnya, 1) Projek Apache merangkumi pelbagai bidang dari pelayan web ke pemprosesan data besar, menyediakan penyelesaian yang kaya; 2) Komuniti Global Yayasan Perisian Apache (ASF) menyediakan momentum sokongan dan pembangunan berterusan untuk projek itu; 3) Apache menunjukkan kestabilan dan skalabiliti yang tinggi dalam aplikasi peringkat perusahaan seperti kewangan dan telekomunikasi; 4) Apache terus berinovasi dalam teknologi baru seperti pengkomputeran awan dan data besar, seperti terobosan dari Apacheflink dan Apachearrow.

Apache tetap penting dalam ekosistem teknologi hari ini. 1) Dalam bidang perkhidmatan web dan pemprosesan data besar, Apachehttpserver, Kafka dan Hadoop masih menjadi pilihan pertama. 2) Pada masa akan datang, kita perlu memberi perhatian kepada pengiktirafan awan, pengoptimuman prestasi dan penyederhanaan ekosistem untuk mengekalkan daya saing.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
