[ 1880957.563400] Out of memory: Kill process 18694(perl) score 246or sacrifice child
[ 1880957.563408] Killed process 18694(perl) total-vm: 1972392kB, anon-rss: 1953348kB, file-rss: 0kB
[ 2320864.954447] TCP: Possible SYN flooding onport 7001.Dropping request. Check SNMP counters .123456
打印内核环形缓存区中的内容,可以用来查看一些错误;
section 4:动态内存分配进阶 深入理解动态分配内存的内部机制 堆和栈 代码段 数据段 环境变量和命令行参数 栈 堆 进程地址空间 malloc函数的机制 分配原则——最先适合分配方法 malloc内部调用sbrk 系统调用 一个进程使用一个堆,所有内存由操作系统管理 问题:如果申请一个内存并没有释放,当进程结束运行的时候,会造成内存泄露么吗。
系统内存余量大小 (mem.memfree):redis是纯内存系统,系统内存必须保有足够余量,避免出现oom,导致redis进程被杀,或使用swap导致redis性能骤降。
3.解析chunktype为covr的越界以及溢出当chunk_data_size小于kskipbytesofdatabox会造成underflow,传给setdata会越界读同一个地方当chunk_data_size等于size_max,可以导致整数溢出,后面的readat操作会继续读写操作,导致写越界.。
通过这个措施,便可以避免攻击数据包到达上层或者被forward到其它网段,有效为后面的处理逻辑屏蔽了不必要的内存消耗以及cpu时间的浪费。
3. vmstat 1$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cachesi so bi bo incs us sy idwa st
3400200889792737085918280005610961300
320020088992073708591860000592132844282981100
320020089011273708591860000095012154991000
32002008895687371259185600048119002459990000
3200200890208737125918600000158984840981100
^C123456789
打印进程、内存、交换分区、IO和CPU等的统计信息;
vmstat的格式如下
> vmstat[options][delay [count]]
vmstat第一次输出表示从开机到vmstat运行时的平均值;剩余输出的都是在指定的时间间隔内的平均值,上述例子中delay的值设置为1,除第一次以外,剩余的都是1秒统计一次,count未设置,将会一直循环打印。
$ vmstat 10 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cachesi so bi bo incs us sy idwa st