Process 进程/informix的高cpu使用率

Process 进程/informix的高cpu使用率,process,load,cpu,informix,Process,Load,Cpu,Informix,我在生产环境中面临流程问题,我也能够在开发环境中模拟该问题 该进程有5个线程,其中线程3和4处于高度活动状态。线程4是消息队列的生产者,线程3是消息解队列的消费者。这两个线程都是DB密集型的 问题 当进程正在运行时,顶部的输出显示此进程的高cpu使用率&onitinformix。Cpu负载始终高于4,这是危险的。 此计算机中只有1个cpu和2个虚拟cpu 所有数据库查询都以提交的读取隔离级别运行 分析 ps-eLo pid、ppid、lwp、nlwp、osz、rss、ruser、pcpu、sti

我在生产环境中面临流程问题,我也能够在开发环境中模拟该问题

该进程有5个线程,其中线程3和4处于高度活动状态。线程4是消息队列的生产者,线程3是消息解队列的消费者。这两个线程都是DB密集型的

问题

当进程正在运行时,顶部的输出显示此进程的高cpu使用率&onitinformix。Cpu负载始终高于4,这是危险的。 此计算机中只有1个cpu和2个虚拟cpu

所有数据库查询都以提交的读取隔离级别运行

分析

ps-eLo pid、ppid、lwp、nlwp、osz、rss、ruser、pcpu、stime、etime、args | grep 此输出显示线程3和线程4的高cpu使用率

onstat-g法案-r 2 此输出显示线程3和线程4的频繁查询


考虑到以上所有事实,是否有任何方法可以降低oninit&process的cpu使用率和cpu负载?从表面上看,系统运行良好。您有两个数据库密集型线程,数据服务器可以很好地为它们提供服务。两条线显然都没有挂断;数据服务器能够跟上工作负载。如果您没有看到等待I/O的情况,或者没有看到显著的分页活动,等等。如果您降低了线程3和线程4的活动级别,您应该会看到oninit也不那么忙

如果您关心数据库活动的数量,则需要查看线程对服务器的SQL要求。声明准备好了吗?统计数字是最新的吗?你能简化查询吗?在许多情况下,您是否可以将查询合并为与简化相反的查询?线程每秒请求多少查询


您确定CPU平均负载为4是个问题吗?我的Mac 2.3 GHz Intel Core i7,16 GiB RAM运行8个BOINC后台进程、两个DBMS和一个web浏览器等,平均负载大约在4到10之间。它的性能非常好,但与您的机器不同。

我的机器只有1个cpu,我从各种来源了解到,单cpu机器的理想cpu负载为1。是否存在可测量的性能问题?是否存在可测量的内存不足,从而触发分页/交换的I/O活动?CPU平均负载是否是故障的唯一指示?同一台机器上还有其他问题吗?是的,这台机器只有4GB内存,因此速度变慢。此外,如果其他进程开始工作,它将成为额外的开销。因此,您需要确定工作负载是什么。有没有办法降低线程中DB密集型活动的强度?您是否可以使用存储过程甚至UDR将工作转移到服务器中,以便减少客户端线程生产者和消费者与服务器之间的通信?这些线程正在执行什么查询?它们有多少,有多大/硬/坏?您是否使用SET EXPLAIN监控活动的数量和成本?所有查询都是基于索引的非常简单的查询。我已经查过它们的价格了。所有成本均为1。将隔离级别更改为脏读而不是提交读有什么用处吗?