🀄️Sima0PT

动态

    • @ronan

      查询达梦慢运行语句

      SELECT        *
          FROM ( SELECT 
          			 DATEDIFF(SS, LAST_RECV_TIME, SYSDATE) SS,
          			 A.SESS_ID,
                       A.THRD_ID,
                       A.USER_NAME ||':' ||  A.CURR_SCH LOGIN_INFO,
                       A.SQL_TEXT,
                       C.STATUS TRX_STATUS,
                       CAST( M.TS * 1.0/1024/1024 AS NUMBER(38,2)) USED_MEMORY_M,
                       'SP_CLOSE_SESSION(' ||A.SESS_ID ||');' KILL_SESS,
                       SF_GET_SESSION_SQL(A.SESS_ID) FULL_SQL ,
                       A.APPNAME|| A.CLNT_IP   CLNT_INFO,
                       A.TRX_ID,
                       B.IO_WAIT_TIME,
                       B.LOGIC_READ_CNT,
                       B.PHY_READ_CNT,
                       B.RECYCLE_LOGIC_READ_CNT,
                       B.RECYCLE_PHY_READ_CNT,
                       C.UPD_CNT,
                       C.DEL_CNT,
                       C.INS_CNT,
                       C.ROLLBACK_FLAG
                  FROM V$SESSIONS A, 
                       V$SQL_STAT B, 
                       V$TRX C,
                       (SELECT SUM(TOTAL_SIZE) TS,CREATOR FROM V$MEM_POOL GROUP BY CREATOR) M
                 WHERE A.STATE ='ACTIVE'
                   AND A.SESS_ID = B.SESSID
                   AND A.TRX_ID = C.ID
                   AND A.SESS_ID = C.SESS_ID 
                   AND A.THRD_ID = M.CREATOR) 
      ORDER BY SS DESC

      0 0
    • @ronan

      查看服务器当前内存和cpu使用率

      echo "==== CPU 和内存使用率 ====" \
      && top -bn1 | grep "Cpu(s)" | awk '{print "CPU使用率: " 100 - $8 "%"}' \
      && free -m | awk 'NR==2{printf "内存使用率: %.2f%%\n", ($3/$2)*100}'

      0 0
    • @ronan

      Flutter assembleDebug编译缓慢 2025有效

      settings.gradle.kts 修改
      pluginManagement {
          repositories {
              google {
                  content {
                      includeGroupByRegex("com\\.android.*")
                      includeGroupByRegex("com\\.google.*")
                      includeGroupByRegex("androidx.*")
                  }
              }
              maven("https://maven.aliyun.com/repository/public") // 阿里云镜像
              maven("https://maven.aliyun.com/repository/central") // Central 仓库镜像
              maven("https://maven.aliyun.com/repository/gradle-plugin") // Gradle 插件镜像
              mavenCentral()
              gradlePluginPortal()
          }
      }
      build.gradle.kts 修改
      allprojects {
          repositories {
              maven("https://maven.aliyun.com/repository/public")
              maven("https://maven.aliyun.com/repository/central")
              google()
              mavenCentral()
          }
      }
      

      0 0
    • @ronan

      达梦慢SQL分析

      调整达梦Log配置文件,存储位置,日志分割配置

      /app/dmdata/DAMENG/sqllog.ini 达梦Log配置文件

      登录达梦数据库,执行下面代码

      SP_SET_PARA_VALUE(1,'SVR_LOG',0)    关闭svr_log
      SP_SET_PARA_VALUE(1,'SVR_LOG',1)    开启svr_log
      SP_REFRESH_SVR_LOG_CONFIG();        刷新配置生效

      生成的log文件通过正则进行查询:[0-9][0-9][0-9][0-9][0-9]\(ms\) 查10s以上的sql

      查询dm数据库分配的内存占用

      SELECT SUM(PARA_VALUE)/1024
      FROM (select *
      from v$dm_ini
      where "PARA_NAME" in ('MEMORY_TARGET',
      'BUFFER',
      'RECYCLE',
      'HJ_BUF_GLOBAL_SIZE',
      'HAGR_BUF_GLOBAL_SIZE',
      'CACHE_POOL_SIZE' ,
      'DICT_BUF_SIZE',
      'SORT_BUF_GLOBAL_SIZE',
      'RLOG_POOL_SIZE'))

      0 0
    • @ronan

      时序型项目,JDK8,java部署后内存占用持续增长导致溢出。

      使用arthas进行查看分析,年轻代持续创建没有进行GC,达到max值后进行GC,默认的并行垃圾回收会对Total进行持续增长,默认单jar最大16G内存占用。

      实际单jar的年轻代占用gc后在300MB左右,但是默认不达到Total值不进行GC,Total值在5G

      所以年轻代里面大部分都是已经失效的内存数据,只是没有进行GC回收,作为垃圾占用服务器内存,导致服务器内存持续增长。

      解决方案,使用G1垃圾收集器,调整垃圾回收速度,加快垃圾回收触发。

      修改后程序稳定在1-2G之间,没有产生持续增长的问题。

      java \
      
      -XX:+UnlockExperimentalVMOptions \
      
      -XX:+UseG1GC \
      
      -XX:MaxGCPauseMillis=100 \
      
      -XX:InitiatingHeapOccupancyPercent=20 \
      
      -XX:G1HeapRegionSize=4M \
      
      -XX:NewRatio=2 \
      
      -Duser.timezone=GMT+08 \
      
      -jar main.jar 

      • -XX:+UnlockExperimentalVMOptions
        解锁实验性的虚拟机选项,使得可以使用一些实验性或不常见的 JVM 特性。

      • -XX:+UseG1GC
        启用 G1 垃圾收集器(Garbage First GC)。G1 是一个旨在适应大内存应用的垃圾收集器,它在性能和暂停时间上有较好的平衡。

      • -XX:MaxGCPauseMillis=100
        设置垃圾回收时最大暂停时间为 100 毫秒。G1 会尝试在垃圾回收过程中尽量减少停顿时间。

      • -XX:InitiatingHeapOccupancyPercent=20
        设置堆内存占用达到 20% 时,启动垃圾回收。这个参数用于控制何时触发垃圾回收。

      • -XX:G1HeapRegionSize=4M
        设置 G1 垃圾收集器的堆区域大小为 4MB。G1 将堆划分为多个区域,以优化内存管理。

      • -XX:NewRatio=2
        设置新生代和老年代的比例为 2。即新生代的大小是老年代的 1/2。

      0 0
    • @ronan

      linux默认配置文件地址:/etc/dm_svc.conf

      配置之前,需要注意事务一致性和实时性,强实时性情况下,不建议使用

      LOGIN_MODE

      指定优先登录的服务器模式。0:优先连接 Primary 模式的库,Normal 模式次之,最后选择 Stantby 模式;1:只连接主库;2:只连接备库;3:优先连接 Standby 模式的库,Primary 模式次之,最后选择 Normal 模式;4:优先连接 Normal 模式的库,Primary 模式次之,最后选择 Standby 模式。缺省值为 4。

      SWITCH_TIMES

      检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,缺省值为 3。

      SWITCH_INTERVAL

      表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~9223372036854775807,缺省值为 200。

      RW_SEPARATE

      指定是否启用读写分离。取值范围:0、1、2、4。0 表示不启用读写分离;1 表示启用读写分离;2 表示启用读写分离,且备库由客户端进行选择;4 表示启用读写分离,且连接备库时仅允许连接事务一致的备库。缺省值为 0。

      启用读写分离时,LOGIN_MODE 参数失效。

      RW_PERCENT

      启用读写分离时,读写分离的分发比例,有效值范围 0~100,缺省值为 25。

      参考:

      达梦读写分离集群配置

      达梦集群介绍

      0 0
    • @ronan

      dm.jdbc.driver.DMException: 超出全局分组空间,请调整HAGR_BUF_GLOBAL_SIZE、HAGR_BUF_SIZE、HAGR_BLK_SIZE

      select * from SYS."V$DM_INI" where PARA_NAME = 'HJ_BUF_GLOBAL_SIZE';

      call SP_SET_PARA_VALUE (1, 'HJ_BUF_GLOBAL_SIZE',200000);

      治标不治本,还是需要调整查询语句,短时间内不报错但是访问速度较慢

      0 0
    • @ronan

      React Web基础入门

      作为入门课来看不错,对整个流程有一个简单的认知构建

      0 0
    • @ronan

      test

      0 0