动态
-
查询达梦慢运行语句
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 -
查看服务器当前内存和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 -
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 -
达梦慢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 -
时序型项目,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 -
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 -
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 -
作为入门课来看不错,对整个流程有一个简单的认知构建
0 0 -
test
0 0