问题现象
顾问反馈,更新安全补丁后,打印无法调起打印页面,现阶段全公司的人都无法使用打印功能。需要及时解决。
问题分析
配置了NMC,发现有很多卡顿线程的远程调用方法为打印相关。说明有很多人都碰到了这个问题。

查看了堆栈信息如下,发现线程在调文件服务器进行下载的动作的时候卡主了。
// 相关信息已加密
... ...
java.io.FilterInputStream.read(FilterInputStream.java:133)
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3066)
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3060)
uap.pub.fs.client.xxx.downloadFile(RestFileTransfer.java:222)
uap.pub.fs.client.xxx.download(RestFileTransfer.java:170)
uap.pub.fs.client.xxx.downloadByFilePath(FileStorageClient.java:212)
nc.impl.pub.filesystem.FileSystemImplement.downLoadFile(FileSystemImplement.java:170)
sun.reflect.GeneratedMethodAccessor2339.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
nc.bs.framework.aop.rt.MethodProceedingJoinpoint$3.invoke(MethodProceedingJoinpoint.java:74)
nc.bs.framework.aop.rt.MethodProceedingJoinpoint.proceed(MethodProceedingJoinpoint.java:184)
... ...
查看了文件服务器的日志uapfs.log,发现如下报错下载异常。

首先怀疑是文件服务器配置异常导致的,故查看了相关环境配置信息。NC单点架构,文件服务器配置为应用服务器本机(server端口)。客户端访问文件服务器地址,能弹出对应界面。(http://应用服务器ip:应用port/fs),发现一切正常。
怀疑是附件丢失导致的,查看了下相关附件存储路径,并查找真实文件,发现文件在服务器上是真实存储,并未丢失,故非此问题导致的。

怀疑是文件服务器端口被防火墙拦截导致打印请求文件服务器一直不通,项目是通过域名访问的,文件服务器也需要配置内网映射,按照相关文档,重新配置转发,发现问题依旧。
后续持续监控uapfs日志发现一直再报相关的某个值的文件出现下载异常。怀疑是某图片在磁盘上存储的位置出现损坏导致的。
查到真实图片,经过与客户和实施沟通,发现此文件为打印模板上的图片,为2019年上传。只要打印都会调用此模板上的图片,一读取就会出现异常,进而导致线程卡死。
解决方案
删除原附件后,重新上传一张名字一样的图片即可。再次验证,问题恢复。

2万+

被折叠的 条评论
为什么被折叠?



