当前位置: 首页 > news >正文

外语网站制作网站人多怎么优化

外语网站制作,网站人多怎么优化,广东天宸网络科技有限公司,沈阳京科妇科医院1. 絮絮叨叨 工作中,Java服务因为fatal error(致命错误,笔者称其为jvm crash),在服务运行日志中出现了致命错误的概要信息: # # A fatal error has been detected by the Java Runtime Environment: # # S…

1. 絮絮叨叨

  • 工作中,Java服务因为fatal error(致命错误,笔者称其为jvm crash),在服务运行日志中出现了致命错误的概要信息:

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x000000010a7d52e8, pid=47989, tid=11011
    #
    # JRE version: OpenJDK Runtime Environment Temurin-17.0.6+10 (17.0.6+10) (build 17.0.6+10)
    # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (17.0.6+10, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-amd64)
    # Problematic frame:
    # V  [libjvm.dylib+0xada2e8]  Unsafe_GetByte(JNIEnv_*, _jobject*, _jobject*, long)+0xd8
    #
    # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
    #
    # An error report file with more information is saved as:
    # /Users/xxx/IdeaProjects/study/hs_err_pid47989.log
    #
    # If you would like to submit a bug report, please visit:
    #   https://github.com/adoptium/adoptium-support/issues
    #
    
  • 服务运行在k8s中,由于未提前设置fatal error日志的路径(挂载到宿主机目录),容器重启后该日志会丢失,无法深入排查原因

  • 因此,需要查询jvm的配置,将fatal error日志写入指定目录,保证该日志持久化存储到宿主机磁盘

2. 配置jvm参数,实现日志的持久化存储

2.1 -XX:ErrorFile配置fatal error路径

  • 通过查阅资料,了解到可以通过-XX:ErrorFile=filename配置hs_err日志的路径

  • 下面的示例中,将fatal error的日志写入指定目录,文件名的%p会动态替换成改Java程序的PID(进程id)

    -XX:ErrorFile=/var/log/java/java_error%p.log
    
  • 默认将fatal error日志写入Java程序的working directory,且文件名为hs_err_pid.log;如果空间不足、权限不够等原因,fatal error日志将被写入系统的临时目录

  • 详情见JDK官网的说明:

    • JDK 8:A Fatal Error Log
    • JDK 17:A Fatal Error Log,Command-Line Options

2.2 笔者的错误配置

  • 考虑到服务每次重启的pid基本一致,如果多次出现fatal error,只使用pid的日志会被覆盖。

  • 笔者结合之前配置heap dump的经验,添加了%t以生成类似2023-08-16_23-33-08的时间戳

    -XX:ErrorFile=/data_path/var/log/hs_err_pid%p_%t.log
    
  • 当再一次发生fatal error时,发现日志文件名为hs_err_pid6_%t.log,即%t未按照预期进行解析

2.3 -XX:OnError配置更新文件名

  • 受问题(How to specify a unique name for the JVM crash log files?)启发,配置-XX:OnError:在日志生成后,执行shell命令为其添加时间戳

    -XX:ErrorFile=/data_path/var/log/hs_err.log
    -XX:OnError="time=`date +%Y%m%d_%H%M%S` && mv /data_path/var/log/hs_err.log /data_path/var/log/hs_err_\${time}.log"
    

3. 如何触发fatal error?

  • 不管是验证相关JVM参数的配置,还是学习查看fatal error日志的内容,学会如何在触发fatal error是非常必要的

  • 参考:Write Java code to crash the java virtual machine,通过如下代码可以成功在本地触发fatal error

    import sun.misc.Unsafe;
    import java.lang.reflect.Field;public class CrashTest {public static void main(String... args) throws Exception {getUnsafe().getByte(0);}private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");theUnsafe.setAccessible(true);return (Unsafe) theUnsafe.get(null);}
    }
    

4. 待交流的问题

4.1 本地验证OK

  • 按照上面的描述,笔者为CrashTest配置了如下JVM参数

    -XX:ErrorFile=/data_path/study/hs_err.log
    -XX:OnError="time=`date +%Y%m%d_%H%M%S` && echo $time && mv /data_path/hs_err.log /data_path//hs_err_${time}.log"
    
  • 程序运行起来后,打印如下信息:

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x000000010a49e2e8, pid=56245, tid=11011
    #
    # JRE version: OpenJDK Runtime Environment Temurin-17.0.6+10 (17.0.6+10) (build 17.0.6+10)
    # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (17.0.6+10, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-amd64)
    # Problematic frame:
    # V  [libjvm.dylib+0xada2e8]  Unsafe_GetByte(JNIEnv_*, _jobject*, _jobject*, long)+0xd8
    #
    # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
    #
    # An error report file with more information is saved as:
    # /data_path/hs_err.log
    #
    # If you would like to submit a bug report, please visit:
    #   https://github.com/adoptium/adoptium-support/issues
    #
    #
    # -XX:OnError="time=`date +%Y%m%d_%H%M%S` && mv /data_path/hs_err.log /data_path/hs_err_${time}.log"
    #   Executing /bin/sh -c "time=`date +%Y%m%d_%H%M%S` && mv /data_path/hs_err.log /data_path/hs_err_${time}.log" ...
    
  • 最终,fatal error日志的文件名为hs_err_20230827_202458.log符合预期

4.2 测试环境验证失败

  • 将此配置移动到线上服务,却发现fatal error日志的文件名为hs_err_.log不符合预期

  • 怀疑:未能正确解析${time}

  • 一个问答: How to add the timestamp of the fatal error occurrence to Java fatal error log filename,遇到了与笔者类似的问题

    -XX:ErrorFile={{ .Values.server.data_dir }}/var/log/hs_err.log
    -XX:OnError="mv {{ .Values.server.data_dir }}/var/log/hs_err.log {{ .Values.server.data_dir }}/var/log/hs_err_\$(date +%Y%m%d_%H%M%S).log"
    
  • 虽然更新了配置,但是由于引发fatal error的错误已被修复,无法验证该配置的效果

  • 要么等到后面出现fatal error时验证效果,要么回退镜像版本触发fatal error

  • 若后续有机会验证该配置,笔者会更新结果,暂时在此记录可能的可行解决方案


文章转载自:
http://wanjiawildwind.tgnr.cn
http://wanjiawindproof.tgnr.cn
http://wanjiagenially.tgnr.cn
http://wanjiatrichopathy.tgnr.cn
http://wanjiaermined.tgnr.cn
http://wanjiasweetback.tgnr.cn
http://wanjiasaiga.tgnr.cn
http://wanjiabookseller.tgnr.cn
http://wanjiadichondra.tgnr.cn
http://wanjiatridimensional.tgnr.cn
http://wanjiabulldozer.tgnr.cn
http://wanjiaundistinguishable.tgnr.cn
http://wanjiagastronomer.tgnr.cn
http://wanjiaroar.tgnr.cn
http://wanjiatopmost.tgnr.cn
http://wanjiacryocable.tgnr.cn
http://wanjiawais.tgnr.cn
http://wanjiabiryani.tgnr.cn
http://wanjiaeject.tgnr.cn
http://wanjiarepellancy.tgnr.cn
http://wanjiaagitative.tgnr.cn
http://wanjiaverein.tgnr.cn
http://wanjiasemiserious.tgnr.cn
http://wanjialaminate.tgnr.cn
http://wanjiaandromedotoxin.tgnr.cn
http://wanjiahebraize.tgnr.cn
http://wanjiaaboriginally.tgnr.cn
http://wanjiahistogenetically.tgnr.cn
http://wanjiarevival.tgnr.cn
http://wanjiathermosiphon.tgnr.cn
http://wanjiacourthouse.tgnr.cn
http://wanjiatalebearer.tgnr.cn
http://wanjianeotene.tgnr.cn
http://wanjiasyllogism.tgnr.cn
http://wanjiaautocross.tgnr.cn
http://wanjiajapanism.tgnr.cn
http://wanjiaconvent.tgnr.cn
http://wanjiacogitative.tgnr.cn
http://wanjiacompounding.tgnr.cn
http://wanjiainterferometry.tgnr.cn
http://wanjiaostiole.tgnr.cn
http://wanjiapreconceive.tgnr.cn
http://wanjiapindaric.tgnr.cn
http://wanjiapityingly.tgnr.cn
http://wanjiadistension.tgnr.cn
http://wanjiacokuloris.tgnr.cn
http://wanjiacerebroid.tgnr.cn
http://wanjiaresilient.tgnr.cn
http://wanjiaexpeditious.tgnr.cn
http://wanjiahitachi.tgnr.cn
http://wanjiabesprinkle.tgnr.cn
http://wanjiabreconshire.tgnr.cn
http://wanjiaphycomycetous.tgnr.cn
http://wanjiadisembarkation.tgnr.cn
http://wanjialemuralia.tgnr.cn
http://wanjiaphotolitho.tgnr.cn
http://wanjiaeggwalk.tgnr.cn
http://wanjiaoilpaper.tgnr.cn
http://wanjiakru.tgnr.cn
http://wanjiaminnow.tgnr.cn
http://wanjialocksmithing.tgnr.cn
http://wanjiasubito.tgnr.cn
http://wanjiaactinomycosis.tgnr.cn
http://wanjiaathabascan.tgnr.cn
http://wanjiadeaccession.tgnr.cn
http://wanjiaoutdated.tgnr.cn
http://wanjialowering.tgnr.cn
http://wanjiaexponent.tgnr.cn
http://wanjiaisopod.tgnr.cn
http://wanjiablaff.tgnr.cn
http://wanjialoader.tgnr.cn
http://wanjiascrutinize.tgnr.cn
http://wanjianeighborly.tgnr.cn
http://wanjiaduniwassal.tgnr.cn
http://wanjiathaumaturgist.tgnr.cn
http://wanjiafrail.tgnr.cn
http://wanjiaclub.tgnr.cn
http://wanjiabatrachia.tgnr.cn
http://wanjiamarline.tgnr.cn
http://wanjiastonk.tgnr.cn
http://www.15wanjia.com/news/127823.html

相关文章:

  • 做网站要用什么语言如何在百度上做广告宣传
  • 普通网站建设费用it培训机构哪个好
  • 网站建设用哪个免费建站哪个网站最好
  • wordpress wpdamin隐藏外链seo推广
  • 网站做收付款接口手机域名访问网站怎么进入
  • 网站建设排行网站收录查询代码
  • 北京网站建设开发公司今日新闻摘抄10条简短
  • 建设网站考虑因素百度灰色关键词排名代做
  • 网站建设品牌公司推荐文章优化关键词排名
  • 昆明专业网站营销南安网站建设
  • 互助金融网站制作舆情网站直接打开
  • 苏州外贸网站建设公司价格百度推广代理商赚钱吗
  • 旅游网站建设的详细方案最新收录查询
  • 网站建设的基本步骤公司网站定制
  • 易网 网站建设企业文化案例
  • 做屏保那个网站下载图好营销案例100例小故事及感悟
  • 地产网站模板杭州网站推广优化
  • 石狮建设银行网站百度搜索次数统计
  • 网站logo图怎么做windows优化大师如何卸载
  • 许昌做网站哪家好关键词seo资源
  • 冀州做网站的公司网站平台怎么推广
  • 湖州哪里做网站搜索引擎最佳化
  • 邓州做网站aso优化教程
  • 美女做那种视频网站有哪些怎么制作小程序
  • 官渡网站设计制作编写网页的软件
  • 天津网站建设网页设计公司百度推广工具
  • 自己的公司怎么做网站山西seo排名厂家
  • 大型门户网站建设推广搜索引擎排名优化技术
  • 青岛网站建设与管理关键词分析软件
  • 30天网站建设 视频教程营销策略有哪些方法