先判断是全局慢还是局部慢
区分问题范围是启动排障的第一步。全局慢指所有模块(总账、固定资产、应收应付)均延迟明显,通常指向服务器资源或基础配置;局部慢特指某类单据(如凭证录入页、多组织报表导出)或特定角色登录后才出现卡顿,需聚焦权限、数据量、自定义插件三类因素。可通过以下方式快速定位:同一账号在不同终端访问对比(排除本地网络/浏览器问题),切换NC标准皮肤(Classic)测试(排除UI定制插件干扰),使用管理员账号直连数据库执行简单查询(如SELECT COUNT(*) FROM GL_VOUCHER)验证底层响应。
最短路径:5分钟完成基础性能快筛
无需重启服务,按顺序执行以下动作,覆盖85%常见慢因:
- 检查NC应用服务器CPU与内存占用(Windows任务管理器 > 性能 > CPU/内存;Linux用
top -c),确认是否持续>90% - 登录NC管理控制台(
http://[IP]:8080/ncweb),进入【系统管理】>【监控中心】>【运行状态】,查看“连接池使用率”是否长期>95% - 在NC客户端点击【帮助】>【系统信息】,核对“数据库版本”与“NC版本”匹配性(如NC65 SP6要求Oracle 11gR2及以上)
- 打开NC日志目录(
NC_HOME/logs/appserver/),检查最近1小时是否有大量WARN或ERROR日志(重点关注DBConnectionPool、SQLTimeout关键词) - 用管理员账号执行【系统管理】>【数据清理】>【清理临时表】,清除
tmp_*前缀表(尤其当存在未提交的批量导入任务时)
数据库连接池耗尽:高频阻塞点
现象:用户频繁报“连接超时”、“获取数据库连接失败”,后台日志含Connection pool exhausted。原因多为连接泄漏(未关闭ResultSet/Statement)、连接池最大值设置过低(默认常为20)、或长事务未提交导致连接被独占。处理时需结合NC管理控制台监控与数据库会话分析:
- 在Oracle中执行
SELECT sid, serial#, username, status, sql_id, event FROM v$session WHERE program LIKE '%nc%' AND status='ACTIVE',识别长时间阻塞的会话 - 在NC控制台【监控中心】>【连接池监控】中,观察“当前活动连接数”与“最大连接数”的比值,若持续>90%且“等待连接数”>0,需立即扩容
- 修改
NC_HOME/webapps/ncweb/WEB-INF/classes/jdbc.properties中的maxPoolSize=50(建议值),重启应用服务生效
索引缺失与统计信息陈旧
现象:凭证查询、客户往来账龄分析、多组织合并报表等复杂SQL执行超30秒。根本原因为核心业务表(如GL_VOUCHER、AR_AP_BALANCE、BD_CUSTOMER)缺少复合索引,或数据库统计信息未更新导致执行计划劣化。必须由DBA配合执行:
- 对高频查询字段组合建索引,例如凭证表按
FISCAL, PERD, VCHTYPE, VCHNO建立联合索引 - 在Oracle中执行
EXEC DBMS_STATS.GATHER_TABLE_STATS('NC65','GL_VOUCHER',CASCADE=>TRUE)更新统计信息 - 禁用NC自动统计收集(避免夜间作业影响白天性能),改由DBA在业务低峰期手动触发
NC客户端与Web端差异处理
同一环境出现客户端快、Web端慢,或反之,本质是运行载体不同。客户端依赖本地JRE与缓存机制,Web端依赖Tomcat线程池与前端渲染效率。需分别应对:
- 客户端慢:检查本地JVM参数(
NC_HOME/client/jre/bin/java.exe -version),确保使用JDK 1.8u202+;清理%USERPROFILE%\AppData\Local\NCClient\cache\目录 - Web端慢:调整Tomcat的
conf/server.xml中maxThreads="500"(默认200),增加keepAliveTimeout="60000"提升复用率;禁用NC Web端的“实时消息推送”功能(减少WebSocket连接开销)
自定义开发引发的性能陷阱
二次开发是NC慢的高发区。典型问题包括:在凭证保存事件中调用远程HTTP接口、在列表页Grid中嵌入N+1次数据库查询、使用for循环逐条更新主子表而非批量SQL。排查要点:
- 检查
NC_HOME/webapps/ncweb/WEB-INF/classes/com/nc/extend/下自定义类,重点审查save()、query()方法中是否含HttpURLConnection或Thread.sleep() - 启用NC SQL日志(修改
log4j2.xml中com.nc.bs.dao级别为DEBUG),捕获慢SQL源头 - 对涉及大数据量的查询,强制使用分页(
PageQuery)而非全量加载,并添加ORDER BY ROWID避免排序开销
长期方案:从优化到替代的演进路径
当NC系统已运行超5年、单组织账套数据量>500万行、或频繁出现跨组织合并报表超时(>10分钟),单纯优化边际效益递减。此时应评估替代路径:
财务核算标准化场景:若核心诉求为凭证高效录入、自动结转、一键生成三大报表,且无复杂多组织架构,可优先评估用友畅捷通好会计——其云端部署免运维,凭证平均处理速度比本地NC快3倍,支持手机拍照记账、银行流水智能匹配,适合中小制造、商贸企业快速替换。
业财深度协同场景:若存在销售-库存-采购-财务多环节强耦合(如按订单生产、委外加工结算、项目成本归集),且NC当前流程已严重依赖大量手工补单与Excel中转,建议迁移至用友畅捷通好业财——内置业财一体化模型,销售订单直接驱动库存扣减与应付单生成,财务凭证自动同步,规避NC中因单据状态不一致导致的反复对账。