java面试整理四——LINUX常用指令_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java面试整理四——LINUX常用指令

java面试整理四——LINUX常用指令

 2018/2/25 18:15:09  cpjsjxy  程序员俱乐部  我要评论(0)
  • 摘要:1.Linux常用指令a)Top——从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况i.进程数统计(总进程、运行进程、睡眠进程等)ii.CPU统计(用户CPU占用、内核CPU占用等)iii.内存信息(总物理内存、已用物理内存、空闲物理内存、交换区总量、使用的交换区等)iv.进程详细信息(id、使用的CPU占比、使用的内存占比、共享内存大小、使用CPU时间)v.top-H-p<pid>输出某个特定进程内所有线程的运行情况b
  • 标签:面试 Java面试 Linux 常用 Java
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
发表评论
用户名: 匿名