线程问题

来源:互联网 发布:windows查看内存类型 编辑:程序博客网 时间:2024/05/16 17:18

简单的上传

情景:

             今天同事找到我,说出现了个问题。对于这样的话,我也习惯了很久,就简单的嗯了一下。他继续说道:今天上传试卷包突然上传不了,突然间又可以上传,你过来看看!然后过去...,问题一调就是大半天。

为什么上传不了?具体是什么样的情况?

问题描述:

            三个同事一起过来看问题,一起测试。描述是这样的,上传试卷的时候,第一次可以上传,第二次就上传不了了。描述还有这样的,有些时候能够上传,有些时候却上传不了。

眼见为实:

            我亲自过去操作了几次,都没有上传到。有个同事操作,有几次上传了,有几次上传不了。

问题定位:

            方向一:我心想,这问题是不是会出现在调用程序传参时传错了。因为我这个上传只是一个库,是客户端组好卷后,调用我的库进行上传的。而那个客户端又是一个网站调用启动的。我就找了做网站的同事,他负责调用客户端程序。让他启动三次那个客户端程序,打印了三次启动程序的参数日志。使用工具对比了这三个加密的启动参数,看看是否一致,结果是一致的。那么网站启动客户端程序是,参数传递是没有问题的。

           到客户端程序中查找问题,客户端程序拿到上述的启动的参数后,进行本地启动。继续跑流程。发现能够上传试卷包,没有什么异常的问题。感觉没有问题的样子,那为什么网站启动客户端程序,调用类库就有问题呢!感觉这个方向不对。

           方向二:这个上传试卷包包含上传压缩包,试卷文件夹和更新数据库的数据的操作。首先是不是上传试卷包出问题?这种时候就开始要打日志了。将位置定位到上传压缩包的方法,一句一句日志输出。发现能够日志输出完整,压缩包上传没问题。将位置定位到上传文件夹里,发现文件夹上传不完整,继续追踪,直接到ftp上传文件夹的低层方法了。看到日志的时候,发现上传时没有完整打印日志。那么问题应该很快就出来了吧,不知不觉已经到了中午了。下午再找问题。

          下午一上班就行追踪,发现一个很奇怪的现象,当上传文件夹的时候,发现到了一个比较大的资源文件时,就没有继续打印日志了。心想是不是ftp服务器配置限制了,继续到服务器上查找问题,配置上传文件限制没那么小,而且那个文件就5-6M大小。

           于是尝试手动连接ftp服务器,直接将更大一点的文件推送到服务器上,发现是可以推送上去的。那就不是服务器限制的问题了。

           方向三:好像没有什么方向了,感觉没什么问题。但是代码肯定是有问题的。继续监控整个网站启动客户端,客户端使用库上传资源的流程。好像出现了这样的一种想象,只要客户端迟点关闭,资源就能够上传。突然一个念头出现,是不是客户端在没有上传完资源的时候提前退出,而没有监控子线程的上传过程。继续操作网站->客户端->上传流程。只要客户端提前关闭,资源就没办法上传,当客户端不关闭,等待一段时间后,资源就全部上传。原来是这样的一个线程问题。搞了大半天,真心是经验不足啊。写此日志,以作警示自己日后的代码严谨性。如有错失和不严谨,请指正。


没有激情,何以码人生。

0 0
原创粉丝点击