发布时间:2018-07-29 17:25:11编辑:admin阅读(9898)
搞zabbix监控的时候,linux服务器的负载很低,如何写一个python脚本,让它满载呢?
网上搜了一堆,发现各种不靠谱。后来终于发现了更简单的方法,就是定义一个死循环函数,让函数什么都不做就好了
def deadloop(): while True: pass deadloop()
就是这么简单的几行就能让cpu的一个线程满载
执行之后,查看top
[root@localhost ~]# top top - 17:13:36 up 5:24, 8 users, load average: 0.23, 0.08, 0.06 Tasks: 132 total, 2 running, 130 sleeping, 0 stopped, 0 zombie %Cpu0 : 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3874004 total, 2856660 free, 410604 used, 606740 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3183588 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7519 root 20 0 122852 5496 2428 R 99.3 0.1 0:13.11 python3 6439 root 20 0 862228 49056 8776 S 1.3 1.3 0:22.24 python3 7520 root 20 0 157752 2236 1576 R 0.3 0.1 0:00.01 top
发现只有一个cpu是满载的,使用w查看负载,还是很低
[root@localhost ~]# w 17:14:35 up 5:25, 8 users, load average: 0.72, 0.25, 0.12
如何让4个cpu都满载呢?
使用多进程,那么开几个进程合适呢?根据CPU核心数来!
获取CPU核心数
写一个测试脚本
from multiprocessing import cpu_count print(cpu_count())
执行输出:4
使用多进程并结合CPU核心数
from multiprocessing import cpu_count from multiprocessing import Process def func(): # 死循环函数,让cpu满载 while True: pass if __name__ == '__main__': p_lst = [] # 定义一个列表 core_count = cpu_count() # CPU核心数 for i in range(core_count): p = Process(target=func) # 子进程调用函数 p.start() # 启动子进程 p_lst.append(p) # 将所有进程写入列表中 for p in p_lst: p.join() # 检测p是否结束,如果没有结束就阻塞直到结束,否则不阻塞 print('结束')
执行此脚本,并查看top状态
[root@localhost ~]# top top - 17:18:52 up 5:30, 8 users, load average: 0.11, 0.20, 0.14 Tasks: 134 total, 5 running, 129 sleeping, 0 stopped, 0 zombie %Cpu0 : 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3874004 total, 2915672 free, 351628 used, 606704 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3242624 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7564 root 20 0 132664 6040 1192 R 100.0 0.2 0:08.65 python3 7566 root 20 0 132664 6000 1152 R 100.0 0.2 0:08.64 python3 7565 root 20 0 132664 5988 1140 R 99.7 0.2 0:08.63 python3 7567 root 20 0 132664 6004 1156 R 99.7 0.2 0:08.63 python3
查看cpu使用率,发现4个python3进程都是100%
等待1分钟,查看负载,发现CPU负载在不断上升
[root@localhost ~]# w 17:20:32 up 5:31, 8 users, load average: 3.29, 1.29, 0.54 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 16:51 23:28 0.56s 0.56s -bash
服务器的风扇,在呼呼的叫。先停止吧,死机就完蛋了!
上一篇: 没有了
47605
45985
36909
34469
29080
25713
24566
19714
19245
17756
5565°
6155°
5691°
5737°
6705°
5483°
5484°
5988°
5965°
7295°