feat(all): kill oracle sql ,修改druid 配置

pull/544/head
dazer007 2025-01-23 15:57:11 +08:00
parent e7576af430
commit b4f20d3373
13 changed files with 75 additions and 58 deletions

View File

@ -20,7 +20,7 @@
<spring-boot.version>2.5.15</spring-boot.version>
<shiro.version>1.13.0</shiro.version>
<thymeleaf.extras.shiro.version>2.1.0</thymeleaf.extras.shiro.version>
<druid.version>1.2.23</druid.version>
<druid.version>1.2.24</druid.version>
<bitwalker.version>1.21</bitwalker.version>
<kaptcha.version>2.3.3</kaptcha.version>
<swagger.version>3.0.0</swagger.version>

View File

@ -10,6 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>ruoyi-admin-neuhisutools</artifactId>
<version>1.0.0</version>
<description>
web服务入口
@ -173,7 +174,7 @@
</configuration>
</plugin> -->
</plugins>
<finalName>${project.artifactId}</finalName>
<finalName>${project.artifactId}-${project.version}</finalName>
</build>
</project>

View File

@ -50,9 +50,10 @@ public class DeadLockRac {
public DeadLockRac() {
}
public DeadLockRac(Integer SID, String SID) {
public DeadLockRac(Integer SID, String SID, String sessionStr) {
this.SID = SID;
this.SID = SID;
this.sessionStr = sessionStr;
}
}

View File

@ -19,6 +19,8 @@ public interface IOracleSysService {
* slow
*/
List<DeadLock> getDeadLockSessionV3Slow();
/**
*
*/
void killSession(String sessionStr);
}

View File

@ -10,6 +10,8 @@ import com.neuhis.his.service.IOracleSysService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -21,9 +23,10 @@ import java.util.Map;
@Service
@DataSource(value = DataSourceType.SLAVE)
public class OracleSysServiceImpl implements IOracleSysService {
@Resource
private OracleSysMapper oracleSysMapper;
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<DeadLock> getDeadLockSessionV1() {
@ -33,6 +36,10 @@ public class OracleSysServiceImpl implements IOracleSysService {
@Override
public List<DeadLockRac> getDeadLockSessionV2Rac() {
List<DeadLockRac> deadLockRacs = oracleSysMapper.getDeadLockSessionV2Rac();
deadLockRacs.add(new DeadLockRac(1, "根锁为此会话杀我KILL ME or igore", "001"));
deadLockRacs.add(new DeadLockRac(5728, "<根锁会话>4903 【SID=4903】的SQL阻塞了本语句[5728]杀掉他", "5728"));
deadLockRacs.add(new DeadLockRac(2222, "<根锁会话>1111 【SID=1111】的SQL阻塞了本语句[2222]杀掉他", "5728"));
deadLockRacs.add(new DeadLockRac(3333, "<根锁会话>1 【SID=1】的SQL阻塞了本语句[3333]杀掉他", "5728"));
return this.findV2DeadLockRacSessionId(deadLockRacs);
}
@ -49,13 +56,10 @@ public class OracleSysServiceImpl implements IOracleSysService {
oracleSysMapper.killSession(sessionStr);
}
}catch (Exception e){
System.out.println("数据库死锁异常:"+e.getMessage());
System.out.println("数据库死锁异常:"+e.getMessage());
}
}
/**
*
*/
private List<DeadLockRac> findV2DeadLockRacSessionId(List<DeadLockRac> deadLockRacs) {
//找到有问题的进程
DeadLockRac problematicSession = DeadlockResolver.findProblematicSession(deadLockRacs);

View File

@ -29,6 +29,8 @@ public class HisTask {
OracleSlaveDataAutoPushService oracleSlaveDataAutoPushService;
@Autowired
private IOracleSysService oracleSysService;
@Autowired
private RuoYiConfig ruoYiConfig;
public void pushData()
{
@ -38,7 +40,7 @@ public class HisTask {
public void pushData(String apicode)
{
if (RuoYiConfig.isQuzrtzTask() && jobService.isEnable(JobSwitchConstant.comPatientinfo)) {
if (ruoYiConfig.isQuzrtzTask() && jobService.isEnable(JobSwitchConstant.comPatientinfo)) {
log.info("数据推送开始" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
oracleSlaveDataAutoPushService.pushData(apicode);
log.info("数据推送结束" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
@ -47,7 +49,7 @@ public class HisTask {
public void pushDataByCompareId(String apicode)
{
if (RuoYiConfig.isQuzrtzTask() && jobService.isEnable(JobSwitchConstant.comPatientinfo)) {
if (ruoYiConfig.isQuzrtzTask() && jobService.isEnable(JobSwitchConstant.comPatientinfo)) {
log.info("数据推送开始" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
oracleSlaveDataAutoPushService.pushDataByCompareId(apicode);
log.info("数据推送结束" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
@ -58,10 +60,10 @@ public class HisTask {
* oracle
*/
public void killDeadLockSession() {
if (RuoYiConfig.isQuzrtzTask()) {
if (ruoYiConfig.isQuzrtzTask()) {
log.info("杀oracle死锁开始" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
///List<DeadLock> deadLocks = oracleSysService.getDeadLockSessionV1();
///deadLocks.forEach(deadLock -> HisTask.this.oracleSysService.killSession(deadLock.getSessionStr()));
///deadLocks.forEach(deadLock -> HisTask.this.oracleSysService.killSessionJdbc(deadLock.getSessionStr()));
List<DeadLockRac> sessionV2Rac = oracleSysService.getDeadLockSessionV2Rac();
sessionV2Rac.forEach(deadLock -> HisTask.this.oracleSysService.killSession(deadLock.getSessionStr()));
@ -74,7 +76,7 @@ public class HisTask {
* */
public void deleteLogData(String tableName,String colName,String days)
{
if (RuoYiConfig.isQuzrtzTask()) {
if (ruoYiConfig.isQuzrtzTask()) {
log.info("日志数据删除开始" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));
int num = oracleSlaveDataAutoPushService.LogsTimerDel(tableName,colName,days);
log.info("日志数据删除结束,共删除 "+num+" 条日志。" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss"));

View File

@ -42,6 +42,8 @@ public class SysIndexController extends BaseController
@Autowired
private SysPasswordService passwordService;
@Autowired
private RuoYiConfig ruoYiConfig;
// 系统首页
@GetMapping("/index")
@ -60,8 +62,8 @@ public class SysIndexController extends BaseController
mmap.put("footer", footer);
mmap.put("tagsView", tagsView);
mmap.put("mainClass", contentMainClass(footer, tagsView));
mmap.put("copyrightYear", RuoYiConfig.getCopyrightYear());
mmap.put("demoEnabled", RuoYiConfig.isDemoEnabled());
mmap.put("copyrightYear", ruoYiConfig.getCopyrightYear());
mmap.put("demoEnabled", ruoYiConfig.isDemoEnabled());
mmap.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate()));
mmap.put("isPasswordExpired", passwordIsExpiration(user.getPwdUpdateDate()));
mmap.put("isMobile", ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")));
@ -130,7 +132,7 @@ public class SysIndexController extends BaseController
@GetMapping("/system/main")
public String main(ModelMap mmap)
{
mmap.put("version", RuoYiConfig.getVersion());
mmap.put("version", ruoYiConfig.getVersion());
return "main";
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.web.core.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -21,6 +22,8 @@ import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class SwaggerConfig
{
@Autowired
private RuoYiConfig ruoYiConfig;
/** 是否开启swagger */
@Value("${swagger.enabled}")
private boolean enabled;
@ -59,9 +62,9 @@ public class SwaggerConfig
// 描述
.description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
// 作者信息
.contact(new Contact(RuoYiConfig.getName(), null, null))
.contact(new Contact(ruoYiConfig.getName(), null, null))
// 版本
.version("版本号:" + RuoYiConfig.getVersion())
.version("版本号:" + ruoYiConfig.getVersion())
.build();
}
}

View File

@ -104,7 +104,7 @@ spring:
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
merge-sql: false #关闭SQL merge否则kill语句报错
wall:
config:
multi-statement-allow: true
@ -139,8 +139,6 @@ spring:
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
# profiles:
# active: dev
# 文件上传
servlet:
multipart:

View File

@ -13,13 +13,13 @@ import org.springframework.stereotype.Component;
public class RuoYiConfig
{
/** 项目名称 */
private static String name;
private String name;
/** 版本 */
private static String version;
private String version;
/** 版权年份 */
private static String copyrightYear;
private String copyrightYear;
/** 实例演示开关 */
private static boolean demoEnabled;
@ -29,36 +29,36 @@ public class RuoYiConfig
/** 获取地址开关 */
private static boolean addressEnabled;
private static boolean quzrtzTask;
private boolean quzrtzTask;
public static String getName()
public String getName()
{
return name;
}
public void setName(String name)
{
RuoYiConfig.name = name;
this.name = name;
}
public static String getVersion()
public String getVersion()
{
return version;
}
public void setVersion(String version)
{
RuoYiConfig.version = version;
this.version = version;
}
public static String getCopyrightYear()
public String getCopyrightYear()
{
return copyrightYear;
}
public void setCopyrightYear(String copyrightYear)
{
RuoYiConfig.copyrightYear = copyrightYear;
this.copyrightYear = copyrightYear;
}
public static boolean isDemoEnabled()
@ -86,7 +86,7 @@ public class RuoYiConfig
return addressEnabled;
}
public void setAddressEnabled(boolean addressEnabled)
public static void setAddressEnabled(boolean addressEnabled)
{
RuoYiConfig.addressEnabled = addressEnabled;
}
@ -123,11 +123,11 @@ public class RuoYiConfig
return getProfile() + "/upload";
}
public static boolean isQuzrtzTask() {
public boolean isQuzrtzTask() {
return quzrtzTask;
}
public static void setQuzrtzTask(boolean quzrtzTask) {
RuoYiConfig.quzrtzTask = quzrtzTask;
public void setQuzrtzTask(boolean quzrtzTask) {
this.quzrtzTask = quzrtzTask;
}
}

View File

@ -1,21 +0,0 @@
#!/bin/bash
APP_NAME=ruoyi-admin-neuhisutools.jar
PID=$(ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}')
JVM="-server -Xms1g -Xmx4g -Xmn1g -verbose:gc-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=5 -XX:+ExplicitGCInvokesConcurrent -XX:GCTimeRatio=19 -XX:CMSInitiatingOccupancyFraction=70 -XX:CMSFullGCsBeforeCompaction=0 -Xnoclassgc -XX:SoftRefLRUPolicyMSPerMB=0"
if [ "$PID" != "" ]; then
echo '================>停止服务..........'
kill -9 $PID
sleep 3s
fi
echo '================>nohup.out日志清空成功.........'
echo '' > nohup.out
echo '================>开始重启服务.........'
nohup java $JVM -jar $APP_NAME 2>&1 &
tail -f nohup.out

25
start_admin_dev.sh Normal file
View File

@ -0,0 +1,25 @@
#!/bin/bash
APP_NAME=ruoyi-admin-neuhisutools-1.0.0.jar
PID=$(ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}')
#JVM="-server -Xms2g -Xmx8g -Xmn4g -verbose:gc-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=5 -XX:+ExplicitGCInvokesConcurrent -XX:GCTimeRatio=19 -XX:CMSInitiatingOccupancyFraction=70 -XX:CMSFullGCsBeforeCompaction=0 -Xnoclassgc -XX:SoftRefLRUPolicyMSPerMB=0"
JVM="-server -Xms2g -Xmx8g -Xmn4g -XX:MetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=java_heapdump.hprof -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc_trace.log -verbose:gc -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
if [ "$PID" != "" ]; then
echo '================>停止服务..........'
kill -9 $PID
sleep 3s
fi
echo '================>nohup.out日志清空成功.........'
echo '' > nohup.out
echo '================>开始重启服务.........'
nohup java $JVM -jar $APP_NAME --spring.config.location=file:/data/neuhisutools/application.yml 2>&1 &
tail -f nohup.out

View File

@ -1,6 +1,6 @@
#!/bin/bash
echo '================>停止服务开始..........'
APP_NAME=ruoyi-admin-neuhisutools.jar
APP_NAME=ruoyi-admin-neuhisutools-1.0.0.jar
PID=$(ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}')
if [ "$PID" != "" ]; then
echo '================>停止服务结束..........'