本文阅读时间大约5分钟. 有业务反馈,线上一个应用运行了一段时间之后,在高峰期之后,突然发现处理能力下降,接口的响应时间变长,但是看Cat上的GC数据,一切都很正常. 通过跳板机上机器查看日志,发现一段平时很少见到的日志: Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try i…
JVM区域总体分两类,heap区和非heap区.heap区又分为: Eden Space(伊甸园). Survivor Space(幸存者区). Old Gen(老年代). 非heap区又分: Code Cache(代码缓存区): Perm Gen(永久代): Jvm Stack(java虚拟机栈): Local Method Statck(本地方法栈): 下面我们对每一个内存区域做详细介绍.Eden Space字面意思是伊甸园,对象被创建的时候首先放到这个区域,进行垃圾回收后,不能被回收的对象…
1.内存区域划分 根据我们之前介绍的垃圾收集算法,限定商用虚拟机基本都采用分代收集算法进行垃圾回收.根据对象的生命周期的不同将内存划分为几块,然后根据各块的特点采用最适当的收集算法.大批对象死去.少量对象存活的,使用复制算法,复制成本低:对象存活率高.没有额外空间进行分配担保的,采用标记-清除算法或者标记-整理算法. 从上面的图可以看出, JVM区域总体分两类,heap区和非heap区. 1.heap区又分为: - Eden Space(伊甸园). - Survivor Space(幸存者区).…
使用Django.core.cache操作Memcached导致性能不稳定的分析过程 最近测试一项目,用到了Nginx缓存服务,那可真是快啊!2Gb带宽都轻易耗尽. 不过Api接口无法简单使用Nginx缓存,使用Memcached作二级缓存.但发现性能非常之不稳定,最终发现问题出在Memcached上.大压力时Memcached无法连接,即使使用Telnet也连接超时/连接被拒绝. 与开发沟通后发现用的django.core.cache操作Memcached,于是要求使用其它库取代,选中pyth…
目录 简介 一个奇怪的现象 两个问题的答案 CPU cache line inc 和 add 总结 简介 读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战.探索一下怎么使用assembly来理解我们之前不能理解的问题. 一个奇怪的现象 小师妹:F师兄,之前你讲了那么多JVM中JIT在编译中的性能优化,讲真的,在工作中我们真的需要知道这些东西吗?知道这些东西对我们的工作有什么好处吗? um...这个问题问得好,知道了JIT的编译原理和优化方向,我们的确…
背景 前段时间我们的服务遇到了性能瓶颈,由于前期需求太急没有注意这方面的优化,到了要还技术债的时候就非常痛苦了. 在很低的 QPS 压力下服务器 load 就能达到 10-20,CPU 使用率 60% 以上,而且在每次流量峰值时接口都会大量报错,虽然使用了服务熔断框架 Hystrix,但熔断后服务却迟迟不能恢复.每次变更上线更是提心吊胆,担心会成为压死骆驼的最后一根稻草,导致服务雪崩. 在需求终于缓下来后,leader 给我们定下目标,限我们在两周内把服务性能问题彻底解决.近两周的排查和梳理中,…
本篇文章分为三部分,首先简单介绍一下分析的工具Windbg,其次针对一个网关服务性能问题进行逐步刨析,最后针对性能问题的分析总结. 一 Windbg介绍 1.Windbg是个非常强大的调试器,它设计了极其丰富的功能来支持各种调试.针对几个常用的应用场景进行了对比分析 支持的类型 说明 应用场景 用户态调试 附加进程的方式调试.调试器与被调试程序建立联系,程序像调试器发送暂停和恢复调试指令. 类似VS的单步调试,可以是设置断点单步调制 内核态调试 用来在本地和远程计算机调试内核 1.在系统启动的早…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 最近连续有两个项目现场出现了AGS服务荡掉的问题,一个是通州现场,一个是福州现场. 1.1通州现场的问题描述和解决思路 通州现场环境为ArcGIS9.2,使用IMS发布的地图服务,其问题表现为每隔两天左右,其地形图服务便会崩溃一次,重启地形图服务后地图可以正常显示. 因为IMS中地图的出图为动态出图,所以其出图时需要通过连接SDE,此问题的出现很可能是SDE…
问题背景 双十一零点时,有一个服务A(后文该服务都用A来代替)的tp99由平常的50ms左右突然彪到60000ms,导致调用端积累了几十W的数据,同时,也影响到了同一个docker上的其他服务.那为什么会出现这种问题呢,且看下面排查过程. 问题分析 1.将一台docker上其他服务都进行下线,同时将其他docker上的A服务进行下线,也就是说调用方只能调用到该docker上的A服务.这个时候发现除了A服务性能比较差,其他服务基本恢复正常. 2.将A服务的每一步认为耗时的地方都加上日志打印,包括内…
问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求. 进入服务器查看日志,发现tomcat凌晨6-7点的日志丢失,查看进程端口仍旧开放. root@# lsof -i: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java root 0t0 TCP *: (LISTEN) 从存档的日志找到一…
在安装Oracle的时候,可能因为我们分配的swap空间不够导致安装失败.处理步骤如下: SWAP空间为2G [root@linux01 oracle]# free            total      used      free    shared    buffers    cachedMem:      2039004    1207260    831744          0      22668    833660-/+ buffers/cache:    350932 …
codecache代码缓存区,主要存放JIT所编译的代码,同时还有Java所使用的本地方法代码也会存储在codecache中.不同的jvm.不同的启动方式codecache的默认值大小也不尽相同. JVM 版本和启动方式 默认 codeCache大小 32-bit client, Java 8 32 MB 32-bit server, Java 8* 48M 32-bit server with Tiered Compilation, Java 8 240 MB 64-bit server, J…
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/root/5a62374a-9509-4d20-befb-de0e00c0e7ad/hive_2019-06-14_11-12-24_067_6655769013562582754-1/-mr-10016. Name node is in…
因磁盘空间不足导致HDFS的NameNode进入安全模式问题记录,调用API上传及下载文件时报如下错误信息: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot delete /null/daxt/0265803074a54d54b8ec0b91df359bdf.log. Name node is in safe mode. Resource…
oracle所在磁盘空间不足导致了数据库异常.需要减小数据文件的大小来解决. 1.检查数据文件的名称和编号 select file#,name from v$datafile; 2.看哪个数据文件所占的空间最大,根据该数据文件的编号查看该数据文件的最大数据块数 select max(block_id) from dba_extents where file_id=8; 查询结果 3.计算该表空间的实际占用空间.(不是物理文件的大小) 查看每个数据块的大小 show parameter db_bl…
相信大家都遇到过这样的问题,有手机浏览器的问题导致服务端SESSION读取不正常,目前在项目中的解决方法是采取H5手机本地存储唯一KEY解决的 代码片段 //定义json格式字符串 var userData = { name: "sankyu Name", account:"sankyu", level:1. disabled:true }; //存储userData数据 localStorage.setItem("userData",JSON.…
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed standards>(2013/3/1).这是其第七章的一部分,给出了IP服务性能模型.PS:在此感谢一位师弟的翻译. 基于IP的平台通信服务通常以两种方式进行:垂直和水平方式.通过模型理解这两个不同方式的性能特点对于确定服务性能非常重要. 分层(垂直)模型 IP服务性能的分层模型很简单,这受益于IP的…
修改ip导致服务不可用 1.修改hostsvi /etc/hosts 修改ip地址 2.lsnrctl start 后会发现The listener supports no services,解决方案如下 $sqlplus / as sysdba SQL>startup SQL>show parameter service_names SQL>alter system register; $lsnrctl status OK 原理是强制注册服务,此操作成功前提是你的listener.or…
近日,我们开发发现有一台配置相同的服务器跑的特别慢,相同数据量的情况下,其他服务器只要跑10分钟,这台服务器要跑50分钟,经确认,所有的应用层配置参数都相同.上去之后,发现该服务器swap使用比较多,大概有8-10G左右(配置了32G,1:1),该服务器上的应用进程内存使用量(PSS)和其他服务器差不多,不存在特别多的情况.为了尽可能不使用交换区,将vm.swappiness设置为0了,重跑,发现运行一段时间之后,cached和free都没有了,swap又上去了,但是rss占用一直在十几个G(p…
前言 上述我们简单讲解了几个小问题,这节我们再来看看如标题EF Core中多次Include导致出现性能的问题,废话少说,直接开门见山. EntityFramework Core 3多次Include查询问题 不要嫌弃我啰嗦,我们凡事从头开始讲解起,首先依然给出我们上一节的示例类: public class EFCoreDbContext : DbContext { public EFCoreDbContext() { } public DbSet<Blog> Blogs { get; set…
摘要:已经上线的项目,出现服务挂掉的情况. 介绍:该服务是专门做打印的,业务需求是生成PDF文件进行页面预览,主要是使用ItextPDF+freemaker技术生成一系列PDF文件,其中生成流程有:解析模板生成临时PDF文件--->在临时PDF文件上注入文本和签名域--->旋转页面--->合并生成的多个PDF文件--->删除全部临时文件. 由于该业务生成的文件只是用来预览,不做保存,所以需要生成后就要删除.而每次生成的文件都是放在一个临时文件夹下,临时文件夹一开始我是根据建议书ID…
  1.事故背景 在APP访问服务器接口时需要从redis中获取token进行校验,服务器上线后发现一开始可以正常访问,但只要短时间内请求量增长服务则无法响应 2.排查流程 (1)使用top指令查看CPU资源占用还远远达不到瓶颈,排查因为CPU资源不足导致服务不可用的可能 (2)查看tomcat线程池配置,默认最大线程数为200,理论上可以支持目前服务器的访问量 (3)使用jmap指令保存堆栈信息,jmap -dump:format=b,file=dump.log pid,pid为进程号 (4)…
今天在使用exp imp将生产环境数据库导入到测试环境的过程中,imp的时候 发现在导入某张表的时候卡住了. 起初是以为该表比较大的缘故,后来过了很久 发现还是卡在那里. 最后分析原因 发现设置的归档目录大小太小了. 修改了归档目录的大小 Imp操作继续执行. 查看归档目录的大小 show parameter db_recovery_file_dest 修改归档目录的大小 alter system set db_recovery_file_dest_size=20G; 后来又遇到数据库表空间满了…
https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/09.3.md 9.3 锁和 sync 包 在一些复杂的程序中,通常通过不同线程执行不同应用来实现程序的并发.当不同线程要使用同一个变量时,经常会出现一个问题:无法预知变量被不同线程修改的顺序!(这通常被称为资源竞争,指不同线程对同一变量使用的竞争)显然这无法让人容忍,那我们该如何解决这个问题呢? 经典的做法是一次只能让一个线程对共享变量进行操作.当变量被一个线程改变…
关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法     最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且新窗口的URL是根据用户选择结果动态产生的.LinkButton的代码这样写:    protected void ServiceManHistoryButton_Click(object sender, EventArgs e)    {        Response.Write("<sc…
只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或IM通讯相关项目开发,或许就需要偏向CPU.磁盘.网络及内存方面的问题排查及调优技能 CPU过高,怎么排查问题 linux内存 磁盘IO 网络IO java 应用内存泄漏和频繁 GC java 线程问题排查 常用 jvm 启动参数调优 介绍一下linux 调优相关命令,传送门:开发必备linux命令…
问题描述 在正常使用Azure Redis的服务中,突然发现Redis 的CPU达到了100%, 正常的使用中发现性能问题严重.从Redis的门户图表中,观察到CPU, Connection,Lentency,Server Load都出现高的情况 CPU Server Load Lentency(Redis处理请求的延迟情况) Connection(客户端连接数情况) 问题分析 根据以上的图表发现,在Connection高的情况下导致了CPU上升并持续到100%, 引起了Server Load比…
在没遇到这个问题之前,我对JVM的解释模式与编译模式的代码性能相差有多大,是没有感觉的,只是觉得编译模式会比解释模式性能好那么一点点吧. 但是经历过这次以后,让我对JVM的即时编译产生了兴趣.先来看看这个问题的背景: 大概是4年前,我的团队里有一个PM找我说他们遇到一个很奇怪的问题,在性能测试的时候,有几个不同的测试场景混合在一起进行压力测试,有时会出现测试几十几分钟以后性能会下降的很厉害,一旦出现性能下降以后,性能再也回不到刚开始测试的水平.奇怪的是:它不是必现的,而且如果只是某1个或者2个场…
一.优化nginx服务的worker进程数 在高并发.高访问量的Web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求. 1).优化nginx进程对应的配置 优化nginx进程对应nginx服务的配置参数如下 cat nginx.conf worker_processes 1; #指定了nginx要开启的进程数,结尾的数字就是进程的个数; 上述参数调整的是nginx服务的worker进程数,nginx有master进程和worker进程之分,master进程为…
优化Nginx服务的worker进程个数 修改nginx主配置文件 worker_processes 1; #指定了Nginx要开启的进程数,结尾数字就是进程个数 Nginx有Master进程和worker进程之分,Master为管理进程,真正接待“顾客”的是worker进程. 优化Nginx进程个数的策略 (1)worker_processes参数大小的设置最好和网站的用户数量相关联, (2)新搭建服务器时,worker进程数最开始的设置可以等于CPU的核数,高流量高并发场合也可以考虑将进程数…