python c/s模式下的内存监控模拟代码
对与服务端我们可以自己写些API供监控使用。
以下Code只是简单的给监控机吐出固定的mem值:80,不过,可以根据后期需要来开发相应的模块。此次我采用的是select来作为server端的socket监控,不过对与他的1024限制来说,我觉得仅作为监控服务端来说足够了,如果作为更大并发的server端话,可以使用poll,epoll,或者多线程并且结合队列来做到一定的限制,别让过多的连接把服务器干挂。
Server端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/usr/bin/env python
#Author:Badboy
#CreatBy:2014/5/1
import socket,select
host = "192.168.1.61"
port = 1001
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.setblocking( 0 )
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
sock.bind((host,port))
sock.listen( 1024 )
inputs = [sock]
outputs = []
addrs = {}
debug = 0
def get_free_mem():
return "80"
def send_data(sock,data):
if data.strip() = = 'mem' :
sock.send(get_free_mem())
else :
sock.send( "Error key words!" )
while inputs:
rlist,wlist,elist = select.select(inputs,outputs,[], 0 )
for s in rlist:
if s = = inputs[ 0 ]:
clientsock,clientaddr = s.accept()
inputs.append(clientsock)
addrs[clientsock] = clientaddr[ 0 ]
print "ClientAddr:" ,clientaddr[ 0 ]
if debug:
clientsock.send( "Welcome here!\r\n" )
else :
words = s.recv( 1024 )
if not words:
print "Byebye" ,addrs[s]
s.close()
inputs.remove(s)
del addrs[s]
if s in outputs:
outputs.remove(s)
continue
if s not in outputs:
outputs.append(s)
for s in wlist:
send_data(s,words)
outputs.remove(s)
|
Client
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#!/usr/bin/env python
#Author Badboy
#CreatBy:2014/5/1
import socket,sys
mem_check = "mem"
host = "192.168.1.61"
port = 1001
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((host,port))
sock.send(mem_check)
mem_warning = 40
mem_critical = 20
mem_size = sock.recv( 1024 )
if mem_size = = "Error key words!" :
print "Please check client!"
sys.exit( 1 )
mem_size = int (mem_size)
if mem_size > mem_warning:
print "Mem Size Ok!"
elif mem_size < mem_critical:
print "Mem Size Critical!"
else :
print "Mem Size Warning!"
|
以上仅是案例,大家可以在此基础上扩展修改的。
本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/1405310,如需转载请自行联系原作者
python c/s模式下的内存监控模拟代码相关推荐
- 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码
本文记录的是之前四篇文章所对应的汇编代码.四篇文章分别是: [OS学习笔记]十二 现代处理器的结构和特点 [OS学习笔记]十三 保护模式一:全局描述符表(GDT) [OS学习笔记]十四 保护模式二:段 ...
- 【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制
上一篇文章学习了段描述符与段描述符各个标志位的含义:段描述符 本篇文章学习如何进入保护模式,并学习如何在保护模式下进行内存访问. 1.如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中( ...
- linux分析目录内存,在 Linux x86-64 模式下分析内存映射流程
前言 在上一篇中我们分析了 Linux 在 x86-32 模式下的虚拟内存映射流程,本章主要继续分析 Linux 在 x86-64 模式下的虚拟内存映射流程. 讨论的平台是 x86-64, 也可以称为 ...
- IA-32 Intel手册学习笔记(二)保护模式下的内存管理
内存管理概述(Memory Management Overview) Inter体系结构的内存管理可分为两部分:分段和分页. 分段提供了一种机制,这种机制可以为每个程序或者任务提供单独的代码.数据和栈 ...
- [python] 命令行模式下出现cp65001异常
问题 在命令行模式下有时会提示cp65001异常,很显然是命令行编码和python环境编码不匹配. 解决 切换命令行编码 unknown encoding: cp65001异常 python安装后进入 ...
- 附录-实模式下1M内存
8086可以访问1MB 内存.其中,0x00000-0x9FFFF 属于常规内存,由内存条提供: 0xF0000-0xFFFFF由主板上的一个芯片提供,即ROM-BIOS. 中间还有一个320KB 的 ...
- X86保护模式下的内存寻址
段选择器 :32位汇编中16位段寄存器(CS.DS.ES.SS.FS.GS)中不再存放段基址,而是段描述符在段描述符表中的索引值,D3-D15位是索引值,D0-D1位是优先级(RPL)用于特权检查,D ...
- java命令框编译代码的方式_在命令行模式下如何编译运行Java代码
由于已经习惯了在Windows环境中进行开发,最近在尝试将开发环境转移到Linux上面.遇到一篇值得参考的外文,特翻译记录一下.[只翻译了部分] 一直被集成开发环境和自动构建工具"溺爱&qu ...
- linux cacti 搭建,linux下搭建cacti监控(示例代码)
一.cacti 监控软件简介 1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存 和更新数据,当用户需要查看数据的时候用rrd ...
- IDEA 在DEBUG模式下如何不执行后续代码直接停止程序?
第一步:打断点 第二步:找出控制台 idea可以使用快捷键:两下alt,点击左下角的debug 第三步:出现当前页面 第四步:右键 然后,在弹框中输入符合格式的返回数据,即可直接返回,不再执行下面的代 ...
最新文章
- DevExpress XtraTabControl 加载Form
- Mips KVM TrapEmulate implemented in Linux
- linux平台下Tomcat的安装与优化
- mysql 学习笔记 11过程控制
- Oracle11gR2_ADG管理之恢复主库的truncate表实战
- spark 把一列数据合并_Spark DataFrame列的合并与拆分
- Python模块(二)(序列化)
- 关于博客改版:我的一些想法与初衷
- CSS实现盒子居中对齐的七种方法
- K650c + Ubuntu 15.04无法正常关机,重启
- 寻租——乞丐没有白拿施舍
- 学生管理系统IPO图_高校学生考勤管理系统
- 什么是监管数据?什么是监管信息系统?监管数据安全管理办法说了什么?
- 有关chromium浏览器 ios 读证书 验证证书 (注没有找到方法),在这里做一下笔记
- 伤心----------绝望
- 辽宁移动cm201-2机顶盒把720P输出强制修改为1080P输出的方法
- c8网络语言意思,老外常用的网络英文缩写
- TCPIP卷一(2):二层封装之–PPP与FR
- Matlab虚拟现实工具箱——没有VRML Editor时的使用办法(应该是Simulink 3D Animation Demo版本的都是这样)
- 近期整活之相关软件之安装说明