Client在通过main方法for循环执行上传到Server(main方法启动),文件量不会出现丢失,比如上传1000个,服务端会获取到1000个,也不会出现连接超时等问题;
但是将Client集成到Web(spring+springmvc)服务中,高并发测试上传会出现有时文件丢失,比如Client上传1000个文件,可能Server(main方法启动)就只获得了900多个,当我关闭Server,Client日志就会出现“远程服务器关闭了连接....”的报错信息。请问一下这是什么原因导致的?
但是将Client集成到Web(spring+springmvc)服务中,高并发测试上传会出现有时文件丢失,比如Client上传1000个文件,可能Server(main方法启动)就只获得了900多个,当我关闭Server,Client日志就会出现“远程服务器关闭了连接....”的报错信息。请问一下这是什么原因导致的?
解决方案 »
- 在struts2的action中使用axis调用webservice出错
- 请求帮助
- hibernate多对多映射问题求助
- 关于怎样移除Structs的问题
- 用ant构建文件,我的hibenate-tools已经添加到class_path中,为什么还提示错误。
- java中怎么执行liunx命令?
- 学习WebService中的困惑,哪位帮忙说说
- 急!!我在tomcat下面可以,但是weblogic下面就不行,怎么回事?
- 运行一个软件的时候提示:the java virtual machine cannot be loaded?
- 高手们,请指导!
- HTTP Status 500 - java.lang.NullPointerException问题如何解决
- 新人求助!!!
什么服务器操作系统?操作系统做优化了吗?很可能是服务器最大文件数/线程数限制导致
参考:
https://blog.csdn.net/gatieme/article/details/51058797
服务器同时做客户端经常会出现的问题是,没有tcp可用。一个IP最多可以有65536个客户端TCP连接,而通过异步IO接入的服务器连接可能趋势上10w先在服务器上直接跑main方法,是否有问题?并发要求会不会超过5w/ip(65536是理论值,5w是实际可用的)
如果并发只是1000这个数量级,那就查文件传输的客户端一侧。一个web请求,一个client上传请求,最大的问题是线程限制导致客户端连接阻塞,看看web请求的最大值是多少,检查jboss4中的最大请求数,启动脚本的jvm参数的线程栈大小(限制了线程数量)最好的解决办法是异步+线程池。
异步最简单的实现是使用jms,mdb中做上传处理
自启动servlet就是增加了属性<load-on-startup>1</load-on-startup> 可以用它在应用包(war中)写一个线程池。