x86服务器中网络性能分析与调优 2017-04-05 巨枫 英特尔精英汇 [OpenStack 易经]是 EasyStack 官微在2017年新推出的技术品牌,将原创技术干货分享给您,本期我们讨论 [x86服务器中网络性能分析与调优] 那些事! >> 网络性能理论极限 网络数据包处理的性能指标,一般包括吞吐.延时.丢包率.抖动等. 数据包有大有小,数据包的大小对这些性能指标有很大的影响. 一般认为服务器处理能力很强,不是数据包处理的瓶颈,而通过物理线路能够传送数据包的最大速率,即线速(Wir…
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款了,包括很多大型电商网站淘宝.京东.苏宁易购等,都在使用Nginx或者Apache作为Web中间件.而且很多编程语言在做Web开发时,会将Apache或者Nginx作为其绑定的固定组件,比如php语言做Web开发时,就经常和Apache联系在一起,使得apche成为了php在Web开发时的一个标配.而Ngin…
Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直接关系到了很多大型电商网站的访问承载能力.大数据的数据处理量等,它的性能分析和调优往往还可以节省很多的硬件成本. 5.1  JVM基础知识 5.1.1  JVM简介 JVM是Java Virtual Machine(Java虚拟机)的英文简写,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Ja…
最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,CPU利用率瞬间飙升到85%-95%,一旦停止就恢复到40%以下,这让我不得不面对以前从未关注过的程序性能问题. 在硬着头皮查找资料定位错误修正bug的过程中参考了下面两篇文章: windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码:http://blog.csdn.net/hexin373/article/details/8846919 java程序cpu占用过高问题分析:http://ww…
第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基于SMP(symmetric multiprocessing)结构的. 通过观察线上机器cpu使用率会发现,使用率很低很低,不到5%: 说明我们的资源浪费情况多么严重啊:(但为什么不能一台机器多部署几个应用呢,后边我会解释); 我们线上的cpu一个核支持超级线程,也就是一个核上可以并行运行几个线程)…
一.使用 dstat -tcdlmnsygr --disk-util 查看当前系统资源使用状况,当前cpu使用率100% 二.使用TOP命令 查看当前占用CPU进程,可以看到当前占用CPU进程最高的是MYSQL load average出现负载 三.开启慢SQL的配置 1.LIUNX 系统 在mysql配置文件my.cnf中增加 slow_query_log    布尔型变量,默认为真.没有这变量,数据库不会打印慢查询的日志. slow_query_log_file=/usr/local/mys…
近来看到别人的有关数据库查询cpu占用较高的sql语句(本人sql并不好),所以查询了一下资料,记录一下,便于理解和应用. 首先,将语句贴在这里 SELECT TOP 10 --平均cpu时间 total_worker_time/execution_count AS avg_cpu_cost, plan_handle, execution_count, (SELECT SUBSTRING(text, statement_start_offset/2 + 1, (CASE WHEN stateme…
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2.查看每个物理cpu中的core个数: cat /proc/cpuinfo |grep "cpu cores"|wc -l 3.逻辑cpu的个数: cat /proc/cpuinfo |grep "processor"|wc -l 物理cpu个数*核数=逻辑c…
在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构 Resin版本为:[root@localhost lib]# java -classpath ./resin.jar com.caucho.VersionResin-3.2.1 (built Fri, 17 Oct 2008 04:11:01 PDT)Copyright(c) 1998-2008 Caucho Technology. Al…
今天朋友问我一个Linux程序CPU占用涨停了,该如何分析, CPU占用过高,模拟CPU占用过高的情况 先上一段代码: #include <iostream> #include <thread> #include <vector> int main(int argc, char **argv) { std::vector<std::thread> test_threads; ; i < ; i++){ test_threads.push_back(st…
针对服务器框架Engine,在工作线程中发现该线程占用CPU过高,分析之后发现问题出在死循环那里 void cServerBase::OnProcess() { printf("cServerBase OnProcess\n"); while(m_bRuning) { onMsg(); cTimerMgr::Inst().process_timer(); } } 在这个线程里面出现的死循环,所以导致CPU过高. 而在网络线程里面,因为有执行 int nEventNum = epoll_…
转:https://blog.csdn.net/luokehua789789/article/details/53007456 Linux 性能分析以及调优介绍 写在前面:计算机要解决的基本问题之一是如何在不增添更多硬件能力的情况下使其能够完成更多工作:而我们应用设计的一项重要伸缩性原则是:随着应用的推广和访问流量的增加,通过相应数量的服务器资源来应对:资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量.数据量等测量:可以参考ebay的架构最佳实践:    http://www.infoq…
针对自己写的一个服务器网络引擎Engine 文章后面附上源码 使用epoll  刚刚开始时候发现占用CPU 特别高,但是网络引擎里面基本没干什么事,不应该有这么高的CPU,一直不解, 于是自己慢慢的分析服务器工作线程,发现主要的性能消耗应该是处理IO 时候, int nEventNum = epoll_wait(m_nEpId, arrEvents, default_epoll_size, ); 原来是 epoll_wait的最后一个参数的问题 int epoll_wait(int epfd,…
重点是查看进程的线程中,哪个线程占用cpu过高,然后用gdb附加到进程,调试线程,看是否有死循环或者死锁等问题,步骤如下: 1 先用ps + grep找出该死的进程pid,比如 1706 2 top -H -p 1706,(top然后shift+H可以看出某个线程,左上角有提示:thread on 则为可查看线程)所有该进程的线程都列出来, 看看哪个线程pid占用最多,记下对应的线程号,如:1723 gdb attach 到进程号码(1706) (仍然在gdb中) info threads 结果…
Simon最近为公司服务器操碎了心 , 先是mysqld进程占用CPU过高 , 导致服务器性能变低 ,网站打开太慢.通过增加max_connections及table_cache解决了问题 ,随后发现memcache的CPU占用一直在50%左右 , 这种情况可不正常. 分析应该是memcache的内存大小还是默认配置,已经满足不了当前的大数据量的需要了,大量的新缓存需要进入,同时大量的旧缓存又需要被淘汰出来,一进一出导致CPU占用过多.进入注册表,找到:HKEY_LOCAL_MACHINE\SY…
在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记录的更全面些. 上两次的博文链接:记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全).EntityFramework中的线程安全,又是Dictionary. 首先请大家不要喷我,因为这一次还是关于Dictionary的一些低级错误,我自己看到都无语了... 抓取Dump 使用任…
w3wp占用CPU过高 在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记录的更全面些. 上两次的博文链接:记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全).EntityFramework中的线程安全,又是Dictionary. 首先请大家不要喷我,因为这一次还是关于Dictionary的一些低级错误,我自己看到都无语了..…
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析,排查定位不容易发现的高消耗CPU的进程 (1).案例准备工作:两台装有linux系统的虚拟机,一台用作web服务器,一台用作web服务器的客户端 (2).预先安装docker,sysstat,perf,ab等工具,ab装在客户端机器上,其他的安装在web服务器端 (3).在第一台机器(web服务器)…
原文:http://bbs.landingbj.com/t-0-241441-1.html MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然CP会U占用过高. 占用CPU过高,可以做如下考虑: 1.打开慢查询日志,查询是否是某个SQL语句占用过多资源,如果是的话,可以对SQL语句进行优化,比如优化 insert 语句.优化 group by 语句.优化 order by 语句.优化 join 语句等等: 2.考虑索引问题: 3.定期分析表,使用optimize table:…
2017-02-28 15:13 331人阅读 评论(0) 收藏 举报   MySQL占用CPU过高如何优化 一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 top 命令 查看Cpu(s) 参数一直处于 98% 状态 ,load average达到了 5  (4核服务器) 可见DB已经超负荷运行了 2.使用root用户登录mysql 执行 show full processlist  查看慢查询,反复执行,发现一直有3个select 查询语句存在,为了缓解D…
PostgreSQL CPU满(100%)性能分析及优化 转自:https://help.aliyun.com/knowledge_detail/43562.html    在数据库运维当中,一个DBA比较常遇到又比较紧急的问题,就是突发的CPU满(CPU利用率达到100%),导致业务停滞.遇到CPU满,往往需要从后端数据库开始排查,追溯到具体SQL,最终定位到业务层.下面是这个问题具体的处理方法. 查看连接数变化 CPU利用率到达100%,首先怀疑,是不是业务高峰活跃连接陡增,而数据库预留的资…
如何定位占用cpu过高的线程 近来发现平台应用响应越来越慢,通过top命令发现,cpu占用率越来越高 1. 首先根据top命令,发现占用cpu最高的进程PID:3075. 通过ps aux | grep PID命令,进一步查看当前进程的具体信息. 2. 显示当前进程下的所有线程列表 ps -mp pid -o THREAD,tid,time 找到耗时最高的线程TID,并将其线程ID转换为16进制格式: printf "%x\n" tid 3. 打印线程的堆栈信息,thread dump…
触发原因:月底系统结账的时候对ERP的操作较多,有用户反馈系统之间的数据传输很久没有同步.随即到服务器上查看,没有发现有程序导致的问题,看了一下CPU的使用率,发现SQL Server占用率在百分之九十以上. 解决过程:首先Baidu了一下,看了一下可能的原因应该是索引问题.之前有仔细看过SQL Server索引相关的书籍和查找优化索引的方法.所以立即使用SQL Server Profiler开始检测对CPU使用率高的SQL statement. 经过检测发现更新数据传输的语句占用CPU很高(u…
1  .MySQL数据库的性能监控 1.1.如何查看MySQL数据库的连接数 连接数是指用户已经创建多少个连接,也就是MySQL中通过执行 SHOW  PROCESSLIST命令输出结果中运行着的线程个数的详情,如图所示. SHOW PROCESSLIST默认情况下只显示前100条记录的详情,如果超过100条后需要显示所有,可以通过执行SHOW  FULL  PROCESSLIST命令,如图所示. show variables like 'max_connections'可以查询数据库中可以支持…
上午收到报警,某台机器上的CPU负载过高,通过逐步的排查,解决了问题,下面记录一下整个排查的过程. 首先,登录上对应的机器,通过top命令找到占用CPU过高的进程ID,也就是PID,为29126, 然后通过ps命令和grep命令找到PID为29126对应的服务,具体命令如下: 结果如下: 找到对应的服务之后,可以直接查看服务打印的日志,没有发现任何异常,所以只能通过jdk提供的JVM工具来排查问题. 先通过jdk自带的工具jstack保存一下JVM进程对应的栈信息,具体的命令是: jstack…
很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因. 1.找出占用CPU最高的10个进程 ps aux | sort -k3nr | head -n 10 或查看占用内存最高的10个进程 ps aux | sort -k4nr | head -n 10 或者使用 top ,按 1 显示CPU列表,再按 shift+p 以CPU排序 top 2.对进程进行跟踪查看 查看进程打开的文件 lsof -p 进程PID 查看进程在处理的文件 ll /proc/进程PID…
Java的工具集相当强大,学习成本也很低,处理线上问题时,jstack这个工具就比微软的windbg,好学好用很多,3步找出占用CPU很高的源所在.而windbg反人类的各种命令,实在不敢恭维. 故意设置了一个CPU占用很高的场景: 排查问题,步骤: 1. ps -mp [替换为进程ID PID] -o THREAD,tid,time 发现线程6322.6323占用CPU很高,时间也很长. 2. printf “%x” [线程ID TID] 把TID转换为16进制. 3. jstack [进程I…
w3wp.exe占用cpu特别高,百度了一下在任务管理器标记出PID可以看到进程号. 试了一下,发现一个xxx网站占用cpu特别高,然后就结束了下进程,再重启网站cpu一下子降下来. 很奇怪,还需要具体研究下原因.…
分几步骤: 1.通过top,查出占用CPU过高的java进程 ,比如: pid :6666 2.通过ps -mp 6666 -o THREAD,tid,time| sort -n -k1 -r 查看此进程占用线程的情况,比如查到占用CPU异常高的线程的线程Id :8888 以上两步,可以直接通过top -H搞定 3.将需要的线程ID转换为16进制格式: printf “%x\n” 8888 [root@xxx.eureka.com]# printf “%x\n” 8888“22b8n” 4.最后…
这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 1.场景模拟 当我们真碰到这个问题的时候应该怎么排查呢? 先用一段程序创建几个线程,将其中一个线程设置成高 CPU 使用率的. public static void main(String[] args) { for (int i = 0; i < 10; i++) { Thread thread = n…