找出当前系统内存使用量较高的进程
方法1:
方法2:
top 然后 大写M
M – 以内存占用率大小的顺序排列进程列表
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
free -m 查看系统内存使用情况
使用cat /proc/meminfo 查看内存分配更详细的信息
SReclaimable: 16474128 kB (这些是内核保持的但是可以释放的inode和dentry的缓存)
使用slabtop 命令按C按分配slab的size大小排列, dentry (directory entry cache)排最前面高其他很多, 其次是inode_cache 文件缓存.
回收dentry cache和inode cache占用的内存
可以查看 这篇文章:linux中cache占用多原因及清理cache方法
(5)查看tcp连接状态
指定查看80端口的tcp连接状态,有利于分析连接是否释放,或者攻击时进行状态分析。
命令:# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
(6)查找80端口请求数最高的前20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
(7)ssh实现端口转发
可能很多的朋友都听说过ssh是linux下的远程登录安全协议,就是通俗的远程登录管理服务器。但是应该很少朋友会听说过ssh还可以做端口转发。其实ssh用来做端口转发的功能还是很强大的,下面就来做示范。
实例背景:我们公司是有堡垒机的,任何操作均需要在堡垒机上进行,有写开发人员需要访问ELasticSearch的head面板查看集群状态,但是我们并不想将ElasticSearch的9200端口映射出去,依然想通过堡垒机进行访问。所以才会将通往堡垒机(192.168.1.15)的请求转发到服务器ElasticSearch(192.168.1.19)的9200上。
例子:
将发往本机(192.168.1.15)的9200端口访问转发到192.168.1.19的9200端口
ssh -p 22 -C -f -N -g -L 9200:192.168.1.19:9200 ihavecar@192.168.1.19
记住:前提是先进行秘钥传输。
命令执行完后,访问192.168.1.15:9200端口则真实是访问192.168.1.19:9200端口。
《本文》有 0 条评论