秦芳睿
8 天以前 d94264b205b37628748705b894248f97210977f8
perf(server): 增大数据库连接池最大活跃数

-将 max-active 参数从 1024 调整为4096
- 此修改旨在提高服务器处理高并发请求的能力
已修改1个文件
156 ■■■■■ 文件已修改
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java
@@ -10,6 +10,8 @@
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
import lombok.extern.log4j.Log4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -26,104 +28,64 @@
@Log4j2
@Component
public class checkForTicketStatusChanges {
  private static final Logger _logger = LogManager.getLogger(checkForTicketStatusChanges.class);
    private static final Logger _logger = LogManager.getLogger(checkForTicketStatusChanges.class);
  /**
   * 工单状态转变为 已接单
   *
   * @throws Exception
   */
    @Scheduled(cron = "0/10 * * * * ?")
  public void execCheckForTicketStatusChangesByOrdersTaken() throws Exception {
    _logger.info("start checkForTicketStatusChanges task");
    try
    {
        Date date = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MINUTE, -5);
        Date time = cal.getTime();
        _logger.info("aaaaaaaaaaaaaa : " + SMTAIServerApp.getApp().getSystemDatasourceUsgae());
        try(SMTDatabase db = SMTAIServerApp.getApp().allocDatabase())
        {
          SMTDatabase.DBRecords dbRecords =
              db.querySQL(
                  "select order_id from work_order_list where is_notify =? and  status_update_time > ? and stepstatus =1",
                  new Object[] {"N", time});
          _logger.info("查询到状态为已接单的工单的数量:{}", dbRecords.getRowCount());
          for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) {
            String agentId =
                (String)
                    SMTAIServerApp.getApp()
                        .getGlobalConfig(
                            "work_order.workflow_agent_re", "status_changes_received_order");
            Json jsonArgs = Json.object("question", "", "order_id", rec.getString("order_id"));
            SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId);
            if (agent == null) throw new Exception("can't find agent : " + agentId);
            SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
            SMTAIServerRequest _tranReq = new SMTAIServerRequest();
            agent.callAgents("/", jsonArgs, llm, "", _tranReq);
          }
        }
    _logger.info("bbbbbbbbbbbbbbbbbbb : " + SMTAIServerApp.getApp().getSystemDatasourceUsgae());
    }
    catch (Exception e) {
      _logger.error("checkForTicketStatusChanges error", e);
    }
  }
    public void execCheckForTicketStatusChanges() throws Exception {
        String result = (String) SMTAIServerApp.getApp().getGlobalConfig("work_order.inner_order", null);
        if (Objects.equals(result, "N")) {
            return;
        }
        _logger.info("start execCheckForTicketStatusChanges task");
        try {
            Date date = new Date();
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, -5);
            Date time = cal.getTime();
  /**
   * 工单状态转变为 已完成
   *
   * @throws Exception
   */
    @Scheduled(cron = "0/10 * * * * ?")
  public void execCheckForTicketStatusChangesByFinish() throws Exception {
        _logger.info("start checkForTicketStatusChanges task");
        try
        {
            Date date = new Date();
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, -5);
            Date time = cal.getTime();
            try(SMTDatabase db = SMTAIServerApp.getApp().allocDatabase())
            {
              SMTDatabase.DBRecords dbRecords =
                  db.querySQL(
                      "select order_id from work_order_list where is_notify =? and  status_update_time > ? and stepstatus =4",
                      new Object[] {"N", time});
              _logger.info("查询到状态为已完成的工单的数量:{}", dbRecords.getRowCount());
              for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) {
                String agentId =
                    (String)
                        SMTAIServerApp.getApp()
                            .getGlobalConfig(
                                "work_order.workflow_agent_finish", "status_changes_received_order");
                Json jsonArgs = Json.object("question", "", "order_id", rec.getString("order_id"));
                SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId);
                if (agent == null) throw new Exception("can't find agent : " + agentId);
                SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
                SMTAIServerRequest _tranReq = new SMTAIServerRequest();
                agent.callAgents("/", jsonArgs, llm, "", _tranReq);
              }
            }
        }
        catch (Exception e)
        {
              _logger.error("checkForTicketStatusChanges error", e);
        }
  }
            try (SMTDatabase db = SMTAIServerApp.getApp().allocDatabase()) {
                SMTDatabase.DBRecords dbRecords =
                        db.querySQL(
                                "select order_id, stepstatus from work_order_list where is_notify = ? and status_update_time > ? and stepstatus in (1, 4)",
                                new Object[]{"N", time});
                _logger.info("查询到状态为【已接单 或 已完成】的工单数量:{}", dbRecords.getRowCount());
                for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) {
                    String orderId = rec.getString("order_id");
                    int stepstatus = rec.getInteger("stepstatus");
                    String configKey;
                    switch (stepstatus) {
                        case 1:
                            configKey = "work_order.workflow_agent_re";
                            break;
                        case 4:
                            configKey = "work_order.workflow_agent_finish";
                            break;
                        default:
                            _logger.warn("不支持的stepstatus: {}", stepstatus);
                            continue;
                    }
                    String agentId = (String) SMTAIServerApp.getApp().getGlobalConfig(configKey, "status_changes_received_order");
                    SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId);
                    if (agent == null) {
                        _logger.error("找不到Agent: {}", agentId);
                        continue;
                    }
                    Json jsonArgs = Json.object("question", "", "order_id", orderId);
                    SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
                    SMTAIServerRequest _tranReq = new SMTAIServerRequest();
                    agent.callAgents("/", jsonArgs, llm, "", _tranReq);
                }
            }
        } catch (Exception e) {
            _logger.error("execCheckForTicketStatusChanges error", e);
        }
    }
}