欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java面试整理四——LINUX常用指令 博客分类: java javalinux面试 

程序员文章站 2024-03-06 18:53:50
...
1. Linux 常用指令
a) Top——从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况
i. 进程数统计(总进程、运行进程、睡眠进程等)
ii. CPU统计(用户CPU占用、内核CPU占用等)
iii. 内存信息(总物理内存、已用物理内存、空闲物理内存、交换区总量、使用的交换区等)
iv. 进程详细信息(id、使用的CPU占比、使用的内存占比、共享内存大小、使用CPU时间)
v. top -H -p <pid> 输出某个特定进程内所有线程的运行情况
b) Pidstat——用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等
i. 命令形式为”pidstat [option] interval [count]”
ii. -u cpu使用情况统计
iii. -r 内存使用情况统计
iv. -d IO情况统计
v. -p 针对特定进程进行统计
c) dstat——是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。
默认情况下分五个区域:CPU使用率、磁盘统计、网络统计、内存分页统计、系统信息
i. -l :显示负载统计量
ii. -m :显示内存使用率(包括used,buffer,cache,free值)
iii. -r :显示I/O统计
iv. -s :显示交换分区使用情况
v. -t :将当前时间显示在第一行
vi. –fs :显示文件系统统计数据(包括文件总数量和inodes值)
vii. –nocolor :不显示颜色(有时候有用)
viii. –socket :显示网络统计数据
d) Netstat——监控TCP/IP网络状态
e) Ifstat——统计网络接口流量状态
f) Vmstat——显示虚拟内存状态
g) Iostat——监控系统输入输出设备和CPU使用情况
h) Jps –l ——显示所有java进程的pid和类名
i) Jstack——输出Java应用程序的线程栈信息
i. Jstack <pid>——查看当前进程的堆栈状态,
j) printf %x <pid>——得到pid的16进制值
k) jstat ——用于观察java程序运行时的工具,
i. -gc:显示与GC相关的堆信息
ii. -gccapacity:显示各个代的容量及使用情况
l) jinfo——查看正在运行的Java程序的JVM参数,并且支持运行时修改个别参数
jinfo [option] <pid>
i. -flags 打印JVM的参数值
ii. -flag <name>=<value> 设置指定JVM参数值
iii. -flag [+|-]<name> 设置指定JVM参数的boolean值
m) jmap——能生成Java应用程序的堆快照和对象的统计信息
jmap -histo 17338 > jmap.log
jmap -dump:format=b,file=heap.hprof 17338 生成对快照信息
n) jhat——可以分析Java程序的堆快照
jhat heap.hprof 通过浏览器访问7000端口查看堆快照信息
2. CPU使用效率监控
a) 使用jps –l 找到java程序的pid
b) 使用pidstat –p <pid> -u  -t 1 3 输出pid进程的cpu使用情况,并找到cpu占用率高的线程
c) 使用top –p <pid> -H 也可以查看cpu占用率高的线程
d) Jstack <pid> > jstack.log 输入线程栈日志
e) Printf %x <pid> 将pid转化为16进制格式
f) 分析jstack.log中对应nid=16进制线程号的相关日志
3. IO使用率监控
a) 使用jps –l 找到java程序的pid
b) 使用pidstat –p <pid> -d -t 1 3 输出pid进程的IO使用情况,并找到IO占用率高的线程
c) 后续分析方法和CPU分析方法相同
4. 内存使用率监控
a) pidstat -p 17338 -r 1 3
5. GC效率监控
jstat -gc 12538 5000 即会每5秒一次显示进程号为12538的java进成的GC情况
6. 高并发linux服务器的基础设置
a) 修改用户进程可打开的文件数限制
修改/etc/security/limits.conf文件
soft nofile 65535  hard nofile 65535
b) 启用timewait 快速回收
net.ipv4.tcp_tw_recycle = 1
c) timewait 的数量,默认是180000
net.ipv4.tcp_max_tw_buckets = 6000
d) 开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接
net.ipv4.tcp_tw_reuse = 1
e) 允许系统打开的端口范围
net.ipv4.ip_local_port_range = 1024 65000
f) 开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。
net.ipv4.tcp_syncookies = 1
g) web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值
net.core.somaxconn = 262144
h) 套接字由本端要求关闭的超时时间,决定了它保持在FIN-WAIT-2状态的时间,默认值是60秒
net.ipv4.tcp_fin_timeout=5
i) 表示当keepalive起用的时候,TCP发送leepalive消息的频度。缺省是2小时,改为10分钟。
net.ipv4.tcp_keepalive_time=600
j) 表示SYN队列的长度,默认为1024,加大队列长度为10240,可以容纳更多等待连接的网络连接数
net.ipv4.tcp_max_syn_backlog=10240
k) 表示在内核放弃建立连接之前发送SYN包的数量,默认值为5。
net.ipv4.tcp_syn_retries=1
l) 参数的值决定了内核放弃连接之前发送SYN+ACK包的数量,默认值为5。
net.ipv4.tcp_synack_retries=1
相关标签: java linux 面试