问题背景:
客户测试环境,Tuxedo中间件make编译时卡住但无任何报错:
原因分析:
1、首先tuxedo编译,是会去访问数据库里的数据,会不会是数据库访问慢的原因?
--查看应用和数据库不在同一网段内,ping数据库地址,发现耗时并不多
--怀疑DNS解析慢导致,故重新在两台服务器的网卡配置文件中指定DNS地址,但是编译仍然不行
ps:vi /etc/sysconfig/network-scripts/ifcfg-eth0
在 RHEL 5、RHEL 6 中,网卡配置文件的前缀为 eth,第 1 块网卡为 eth0,第 2 块网卡为 eth1;以此类推。
而在 RHEL 7 中,网卡配置文件的前缀则以 ifcfg 开始, 加上网卡名称共同组成了网卡配置文件的名字,
例如 ifcfg-eno16777736;
2、根据第1步排除了网络方面的原因,进而怀疑服务器性能太差导致
top命令查看资源使用率,发现该用户的竟然占比98%!!!
检查系统内核 cat /proc/cpuinfo| grep "processor"| wc -l 发现只有2个内核!!!服务器性能相当差;
3、重启服务器,重新make终于可以正常编译了,但是资源占用率也高达92%,但起码能编译了。。。无奈!
解决方案:
1、make的-j参数可以使make进行并行编译。make该参数的用法如下
修改mymakemp.sh文件,增加-j8参数,即同时开启8个任务并行处理,参考如下:
#!/bin/sh
make -j8 -f makefile_mp
[ $? -eq 0 ] || exit 1
make -j8 -f makefile_schedule_mp
2、重启服务器释放其余不必要的资源
3、推荐服务器内核8-16!