作者:京东科技徐传乐背景在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在StopTheWorld问题,因此很容易导致服务超时,引发性能问题。事情最初是线上某应用垃圾收集出现FullGC异常的现象,应用中个别实例FullGC时间特别长,持续时间约为15~30秒,平均每2周左右触发一次;JVM参数配置“-Xms2048M–Xmx2048M–Xmn1024M–XX:MaxPermSize=512M”排查过程Ø分析GC日志GC日志它记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以调优堆设置和
作者:京东科技徐传乐背景在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在StopTheWorld问题,因此很容易导致服务超时,引发性能问题。事情最初是线上某应用垃圾收集出现FullGC异常的现象,应用中个别实例FullGC时间特别长,持续时间约为15~30秒,平均每2周左右触发一次;JVM参数配置“-Xms2048M–Xmx2048M–Xmn1024M–XX:MaxPermSize=512M”排查过程Ø分析GC日志GC日志它记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以调优堆设置和
作者:京东科技徐传乐背景在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在StopTheWorld问题,因此很容易导致服务超时,引发性能问题。事情最初是线上某应用垃圾收集出现FullGC异常的现象,应用中个别实例FullGC时间特别长,持续时间约为15~30秒,平均每2周左右触发一次;JVM参数配置“-Xms2048M–Xmx2048M–Xmn1024M–XX:MaxPermSize=512M”排查过程Ø分析GC日志GC日志它记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以调优堆设置和
作者:京东科技徐传乐背景在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在StopTheWorld问题,因此很容易导致服务超时,引发性能问题。事情最初是线上某应用垃圾收集出现FullGC异常的现象,应用中个别实例FullGC时间特别长,持续时间约为15~30秒,平均每2周左右触发一次;JVM参数配置“-Xms2048M–Xmx2048M–Xmn1024M–XX:MaxPermSize=512M”排查过程Ø分析GC日志GC日志它记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以调优堆设置和
操作系统虚拟内存应用程序通过malloc函数申请内存的时候,实际申请的是虚拟内存,并不会分配物理内存当应用程序读写了这块虚拟内存,CPU就会去访问这个虚拟内存,这时会发现虚拟内存没有映射到物理内存,CPU就会产生缺页中断,进程会从用户态切换到内存态,并将缺页中断交给内核的pageFaulthandler(缺页中断函数)处理。缺页中断处理函数会看是否有空闲的物理内存如果有,就直接分配物理内存,并建立虚拟内存和物理内存之间的映射关系如果没有空闲的物理内存,内核就会开始进行回收内存的工作,如果回收内存工作结束后,空闲的物理内存仍然无法满足此次物理内存的申请,那么内核就会触发OOM(OutofMemo
操作系统虚拟内存应用程序通过malloc函数申请内存的时候,实际申请的是虚拟内存,并不会分配物理内存当应用程序读写了这块虚拟内存,CPU就会去访问这个虚拟内存,这时会发现虚拟内存没有映射到物理内存,CPU就会产生缺页中断,进程会从用户态切换到内存态,并将缺页中断交给内核的pageFaulthandler(缺页中断函数)处理。缺页中断处理函数会看是否有空闲的物理内存如果有,就直接分配物理内存,并建立虚拟内存和物理内存之间的映射关系如果没有空闲的物理内存,内核就会开始进行回收内存的工作,如果回收内存工作结束后,空闲的物理内存仍然无法满足此次物理内存的申请,那么内核就会触发OOM(OutofMemo
挂载:把指定的设备和根下面的某个文件夹建立关联卸载:解除两者关系的过程挂载文件系统:mount命令格式:mountdevicemountpoint---mount设备名挂载点(一个目录)#mountpoint:挂载点目录必须事先存在,建议使用空目录选项:--tfstype:指定文件系统类型,比如ext4--rreadonly,只读挂载--wreadandwrite,读写挂载,此为默认设置,可省略--n不更新/etc/mtab,mount不可见--a自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)--ooptions:(挂载文件系统的选项),多个选
挂载:把指定的设备和根下面的某个文件夹建立关联卸载:解除两者关系的过程挂载文件系统:mount命令格式:mountdevicemountpoint---mount设备名挂载点(一个目录)#mountpoint:挂载点目录必须事先存在,建议使用空目录选项:--tfstype:指定文件系统类型,比如ext4--rreadonly,只读挂载--wreadandwrite,读写挂载,此为默认设置,可省略--n不更新/etc/mtab,mount不可见--a自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)--ooptions:(挂载文件系统的选项),多个选
现在PG数据库在用户侧的应用场景日益丰富,很多国产数据库也与PG开源项目有着很深的渊源,在使用过程中的一些基本运维规则也与PG开源数据库十分近似。今天我们从操作系统的角度来看一看PG数据库日常运维中需要关注的一些问题。目前大多数用户侧的PG数据库规模都比较小,应用系统也都不太复杂,因此大多数情况下,数据库日常运维的难度并不大,不像Oracle这样复杂的数据库系统,遇到些问题还不太容易处理。在PG数据库日常运维上,只要关注下总会话数,活跃会化,并发访问,TOPSQL,一般也就够用了。反而在操作系统层面,需要多加关注。在这种情况下,操作系统的各种资源是否充足是决定数据库运行是否稳定的十分重要的因
现在PG数据库在用户侧的应用场景日益丰富,很多国产数据库也与PG开源项目有着很深的渊源,在使用过程中的一些基本运维规则也与PG开源数据库十分近似。今天我们从操作系统的角度来看一看PG数据库日常运维中需要关注的一些问题。目前大多数用户侧的PG数据库规模都比较小,应用系统也都不太复杂,因此大多数情况下,数据库日常运维的难度并不大,不像Oracle这样复杂的数据库系统,遇到些问题还不太容易处理。在PG数据库日常运维上,只要关注下总会话数,活跃会化,并发访问,TOPSQL,一般也就够用了。反而在操作系统层面,需要多加关注。在这种情况下,操作系统的各种资源是否充足是决定数据库运行是否稳定的十分重要的因