Tuxedo 性能调优之使用 gprof_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3765 | 回复: 1   主题: Tuxedo 性能调优之使用 gprof        下一篇 
Just4Me
注册用户
等级:新兵
经验:61
发帖:5
精华:0
注册:1970-1-1
状态:离线
发送短消息息给Just4Me 加好友    发送短消息息给Just4Me 发消息
发表于: IP:您无权察看 2015-10-30 19:06:37 | [全部帖] [楼主帖] 楼主

     一个tuxedo应用系统的整体性能往往是由很多方面决定的,操作系统、网络、数据库、以及应用系统的设计,程序的编写水平都会影响该tuxedo 应用系统的性能。当性能不好时,主要表现在对客户段的请求响应很慢。这时,如果用tmadmin,中的pq命令察看,会发现有较多的请求在排队。

     如何确认应用程序的瓶颈是性能调优的关键,也是难点。对于一个程序,如果可以知道每个函数的调用次数,调用时间,无疑会指引系统调优的方向。本文将介绍如何使用gprof查看tuxedo服务进程的函数调用情况,包括调用次数、调用时间、函数调用关系图等等。

gprof是GNU profiler工具。基本用法如下:

  1. 使用-pg选项编译和链接你的应用程序。

  2. 执行你的应用程序,使之运行完成后生成供gprof分析的数据文件(默认是gmon.out)。

  3. 使用gprof程序分析你的应用程序生成的数据,例如:gporf a.out gmon.out。

关于gprof的详细用法可以google、百度之,有很多信息,这里不再赘述。

对于一个tuxedo程序,一般会编写很多.cpp文件,生成相应的.o文件,最后使用buildserver命令生成可执行文件。你会想在编 译.cpp文件产生.o文件时,为编译器(系统为linux环境,编译器为gcc)提供-pg选项,再使用buildserver,但在 tmshutdown服务进程之后,并没有发现gmon.out文件产生。为什么?

原来gprof只能在程序正常结束退出之后才能生成程序测评报告,原因是gprof通过在atexit()里注册一个函数来产生结果信息,任何非正 常退出都不会执行atexit()的动作,所以不会产生gmon.out文件。如果你的程序是一个不会退出的服务程序,那就只有修改代码来达到目的。如果 不想改变程序的运行方式,可以添加一个信号处理函数解决问题(这样对代码修改最少),例如:

 1 #include <unistd.h> 
 2 #include <signal.h> 
 3 
 4 static void catch_term(int sig_no) 
 5 { 
       6 exit(0); 
 7 } 
 8 
 9 int main() 
10 { 
      11 signal(SIGTERM, catch_term); 
      12 //以下是原来的代码 
13 }

当使用kill –TERM pid 后,程序退出,生成gmon.out文件。

问题又来了,在tuxedo程序中,你只编写了应用服务的代码,并没有编写main函数,也就是说,buildserver命令在编译时对你的代码 做了一些手脚,查看buildserver帮助文档,可以看到使用-v选项可以详细显示buildserver的编译过程,使用这个选项可以容易看出 buildserver实际上使用gcc来生成可执行文件,并添加了tuxedo相应的链接库,而且可以看到一个你没写过的***.c,编译之后,这 个***.c文件却消失了。

问题就在这,这个***.c文件中包含着main函数,buildserver使用-k选项可以保留这个***.c文件而不被删除。在生 成***.c后,按上面的方法注册一个TERM信号处理方法。此时不再用buildserver生成可执行文件,而是使用buildserver –v实际调用gcc的命令来生成可执行文件。

当你使用tmshutdown –s server –k TERM(使用TERM信号结束程序),还是没有产出gmon.out,原因是在链接时gcc没有使用–pg选项;使用-pg选项重新编译链接程序,启动、结束服务程序后,终于看到久违的gmon.out文件了。




赞(0)    操作        顶端 
容景93
注册用户
等级:上士
经验:254
发帖:0
精华:0
注册:2015-12-4
状态:离线
发送短消息息给容景93 加好友    发送短消息息给容景93 发消息
发表于: IP:您无权察看 2015-12-8 17:44:22 | [全部帖] [楼主帖] 2  楼

进来看看



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论