Java应用CPU占用高故障排查

查找 CPU 占用高的进程ID

ps aux

获取 CPU 占用高的线程 ID

ps -mp <pid> -o THREAD,tid,time

转换线程 ID 为16进制

printf "%x\n" <tid>

输出线程栈信息

jstack <pid> |grep <十六进制tid> -A 100

如果栈信息比较长可以设置输出的行数大点^_^

拿到栈信息后,就可以根据输出内容定位错误了。

awk学习笔记

AWK 是一种用于处理文本的编程语言工具,在很多方面类似于 shell 编程语言。

AWK有两种运行方式

命令行

$ echo "\n\n" | awk '{print("Hello World!");}'

  Hello World!
  Hello World!
  Hello World!

文件执行方式

$ cat hello.txt
  hello
  hello
  hello

$ cat hello.awk 
  {
      print("Hello World!");
  }

$ awk -f hello.awk hello.txt
  Hello World!
  Hello World!
  Hello World!

部署Java项目到Docker容器

如需使用另一个容器里的mysql,需要参数 —link mysql1:mysql,其中mysql1是mysql容器的名称

方法一: 用maven插件部署

查找tomcat镜像

docker search tomcat

新建tomcat-users.xml

vim tomcat-users.xml

<tomcat-users>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
</tomcat-users>

在CentOS 7.x上源码安装Xen 4.5

截止目前为止Xen4CentOS只有Centos6版本可以用,所以Centos7只能编译源码的方式安装。

安装需要的软件包

yum update
yum groupinstall "Development Tools"
yum install -y gcc gcc-c++ git patch texinfo python-devel acpica-tools libuuid-devel ncurses-devel glib2 glib2-devel libaio-devel openssl-devel yajl-devel glibc-devel glibc-devel.i686 pixman-devel bc
rpm -ivh  http://mirror.centos.org/centos/6/os/x86_64/Packages/dev86-0.16.17-15.1.el6.x86_64.rpm

安装 Xen

git clone git://xenbits.xen.org/xen.git
cd xen/
./configure
make dist
make install

CentOS 7 安装配置iptables

CentOS 7 默认使用的是firewall作为防火墙, iptables用于过滤数据包,属于网络层防火墙.firewall能够允许哪些服务可用,那些端口可用,属于更高一层的防火墙。firewall的底层是使用iptables进行数据过滤,建立在iptables之上。习惯了iptables还是继续用吧~

CentOS 7 开始service命令不推荐使用了,提供了新的systemctl工具,为了向后兼容,旧的service命令仍然可用,但会重定向所有命令到新的systemctl工具。systemctl 是管理服务的主要工具,整合了chkconfig与service的功能。

用Mac OS命令把ISO镜像写入U盘

1、查看磁盘

~ ❯❯❯ diskutil list
/dev/disk2 (external, physical):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:     FDisk_partition_scheme                        *16.0 GB    disk2
1:                 DOS_FAT_32                         16.0 GB    disk2s1

2、umount掉U盘

~ ❯❯❯ sudo diskutil umount /dev/disk2

3、将镜像写入U盘

~ ❯❯❯ sudo dd if=/Users/CBC/Desktop/CentOS-6.6-x86_64-bin-DVD1.iso of=/dev/disk2 bs=1M
4418+0 records in
4418+0 records out
4632608768 bytes (4.6 GB) copied, 949.662 s, 4.9 MB/s

4、用iostat命令查看磁盘写入状态

 ~ ❯❯❯ iostat -w 2

从Centos 6.x 升级Centos7

1、安装升级工具依赖的软件包

yum -y install openscap pcre-devel libxml2-devel libxslt-devel m2crypto python-simplejson mod_wsgi

2、安装以下软件的最新版,可以到这里查找:http://dev.centos.org/centos/6/upg/x86_64/Packages

rpm -ihv http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-1.0.2-36.0.1.el6.centos.x86_64.rpm
rpm -ihv http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-contents-0.5.14-1.el6.centos.noarch.rpm
rpm -ihv http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-ui-1.0.2-36.0.1.el6.centos.x86_64.rpm
rpm -ihv http://dev.centos.org/centos/6/upg/x86_64/Packages/redhat-upgrade-tool-0.7.22-3.el6.centos.noarch.rpm

带web界面的Docker管理平台shipyard

Shipyard 是一个管理容器、主机等资源的web图形化工具,它建立在docker集群管理工具Citadel之上。有core和extension两个版本:

类型 功能
core 把多个Docker host上的 containers 统一管理,支持跨越多个host。
extension 添加了应用路由和负载均衡、集中化日志、部署等功能。

TOP命令解释

top命令是Linux下最常用的性能分析工具,它能够实时显示系统中各个进程的资源占用状况。

top命令参数

-b   批处理模式(batch mode),可输出到管道、文件。默认情况下-b会一直输出,可以用-nN指定输出次数。
-n N限制输出次数。
-d N    刷新时间间隔。
-p PID  监控指定进程。
-H -p PID   监控指定进程和进行内线程信息。