开发者学堂课程【企业Web常用架构LAMP-LNMP实战:企业Web服务器现场抓鸡案例分享】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/385/detail/4831
企业Web服务器现场抓鸡案例分享
目录:
一、apache 一些优化思路和技巧
二 抓鸡
一、apache 一些优化思路和技巧
1.Apache 常用运行模式
(1)Perfork:进程级别模式
工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足 MinSpareServers 设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
(2)worker:线程模式
worker使用了多进程和多线程的混合模式,worker 模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比 prefork 有更多可用的线程,表现会更优秀一些,多进程加多线程模式
(3)event:事件模式
解决了 keep-alive 长连接的时候占用线程资源被浪费的问题,在 event 工作模式中,会有一些专门的线程用来管理这些 keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。
当某个连接没有请求时,会主动关闭连接,在 work 模式下,必须等 keep-alive 超时,才可以释放。
测试开发过程,不建议使用
注意:根据业务场景选择模式
业务量大, cup 消耗大->使用 worker 模式,处理性能高
2. 查看Apache模式
[root@7oca7host htdocs]#7s
index.htm1_.info.phpmysqli.phpmysq1-pdo.php
mysq1.php
[root@i7ocalhost htdocs]#.cd --
[root@7ocalhostapache2]#1s
B
in
bui1d
cgi-bin
conf
erro
htdocs
log
[root@7ocaThost apache2
]
#pwd
/
usr/
l
oca
l
/apache2
[root@7ocaThost apache2
] #bin/httpd -l
Core.c
Mod_so.c
http_core.c
Worker.c
Apache 编译进去是 worker 模式运行
切换另一台:perfork 模式
对内存要求大
[root@hadoop apache2]# cd bin
[root@hadoop bin]# ls
[root@hadoop bin]# . /httpd -1
Compiled in modules:
core .c
Prefork.c
http_so.c
打开httpd.conf
#Real-time info on requests and configuration#工nclude conf/extra/ httpd-info.conf
#virtua7 hosts..
#工nc1ude conf/extra/httpd-vhosts.conf
#Local ackess to the Apache HTTPServer Manua1#Include conf/extra/httpd-manua7.conf
#Distributed authoring and versioning (webDAv)#工nclude conf/extra/ httpd-dav.conf
various default settings .
#Include conf/extra/httpd-defau1t.conf
#configure mod_proxy_htm1 to understand HTML4/XHTML1<工fModuTe proxy_html_module>_
Include conf/extra/proxy -html.conf
#secure (ssL/TLs)connections
#工ncTude conf/extra/httpd-ss1.conf#
#Note: The fo77owing must must be present to
查看httpd-mpm.conf
#最大服务端请求连接,默认256,量大满足不了
serverLimit 20000
#启动apache,启用多少进程
Startservers 8
#指定最小空闲线程数
MinspareThreads 75
#指定最大空闲线程数
MaxspareThreads 250
#每一个进程并发最大线程个数
ThreadsPerchild 25
#最大处理的请求数
MaxRequestworkers 400
#最大连接数
MaxConnectionsPerchild 0
二、企业web服务器现场抓鸡案例
查看服务器寻找异常
应用环境:apache+jk+tomcat
网站:电商类
异常:僵死进程
服务器进程 freeDSB 异常进程,模拟正常进程就可能是异常
Sb33进程
998进程
所有异常进程都是 mysql 进程,就代表是中毒了
Perl: 漏洞异常进程
109ma 进程
Sbaok 进程
服务器中木马,接网就会断开,由一个进程入手解决,通过业务入手。
排查异常:
#进入目录apache:
[root@i-465-39832-M apache]# Is
#查找隐藏文件
#查看cgi-bin
Test-cgi
查看apache配置文件,查看是否启用cgi
LoadModu1eheaders_module modu1es/mod_headers.soLoadModu1eident_modu1e
modu1es /mod_ident.so
LoadModule usertrack_module
modules/mod_usertrack.
soLoadModuleunique_id_module modules/mod_unique_id.soLoadModulesetenvif_module modules/mod_setenvif.soLoadModuleversion_modu1e modu1es/mod_version.soLoadModu1emime_modu1e modules/mod_mime . so
LoadModu1e dav_modu1e modu1es/mod_dav.so
LoadModule status_modu1e modules/mod_status.so
LoadModule
autoindex_module_modu1es/mod_autoindex.soLoadModule
asis_modu1e modules/mod_asis.so
LoadModule info_module modu1es/mod_info. soLoadModule cgi_module modu1es/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModulevhost_alias_module
modules/mod_vhost_alias.soLoadModule
negotiation_module
modules/mod_negotiation.soLoadModu1edir_modu1e
modu1es/mod_dir.so
LoadModuleimagemap_module modules/mod_imagemap.soLoadModuleactions_module modu1es/mod_actions.soLoadModulespe1ing_module modules/mod_spe1ing.soLoadModuleuserdir_module modules/mod_userdir.soLoadModulealias_module modu1es/mod_alias.so
LoadModule rewrite_module modules /mod_rewrite.so