• 栗何生
    nohup java \
      -XX:+UnlockExperimentalVMOptions \
      -XX:+UseG1GC \
      -XX:G1HeapRegionSize=16m \
      -Xms3g \
      -Xmx3g \
      -XX:G1MaxNewSizePercent=70 \
      -XX:ParallelGCThreads=12 \
      -jar -Duser.timezone=GMT+08 java.jar \
      --spring.profiles.active=prod > runtime.log 2>&1 &
    

    服务jvm调整,java服务持续运行后,会触发新生代扩容导致频繁扩容,jvm占用空间上升导致服务不稳定,通过限制整体大小,避免产生问题。默认的大小14GB,预留内存低于这个的都可能会产生问题。在使用指令的时候需要通过监控,再进行调整。比如内存新生代增加速度,老年代容量

  • 栗何生

    Mysql8 授权root远程访问

    show databases;
    use mysql;
    select host, user, authentication_string, plugin from user;
    update user set host = "%" where user='root';
    select host, user, authentication_string, plugin from user;
    flush privileges; #刷新权限
    

    修改root密码

    alter USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';


  • 栗何生

    supersonic

    超音数分析助手,能够基于大模型,通过连接数据库进行模型建立,进行数据统计和数据分析。

    腾讯音乐出品的这个系统,确实有些意思,能够通过连接大模型对自然语言分析然后得到一些报表,未来一些统计报表使用这个能够更加灵活的得出数据,减少开发负担,提高统计效率。

    moment picture
  • 栗何生

    查询达梦慢运行语句

    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

  • 栗何生

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

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

  • 栗何生

    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()
        }
    }
    

  • 栗何生

    达梦慢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'))

  • 栗何生

    时序型项目,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。

  • 栗何生

    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。

    参考:

    达梦读写分离集群配置

    达梦集群介绍

  • 栗何生

    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);

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