急啊!!!
我在servlt中处理附件下载,想控制下载的速度,可是当加入这个代码
if(Contants.SLEEPTIME>0){
try {
Thread.currentThread().sleep(Contants.SLEEPTIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
下载的速度是得到控制了,可是压力测试只能上到400用户了,不要那段代码压力测试上到2000用户都没有问题.
不知道什么原因啊>.................package com.gdbeim.oa.struts.message;import java.io.IOException;
import java.io.InputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;import com.gdbeim.commons.Contants;
import com.gdbeim.oa.struts.commons.JDBCFile;public class MessageFileDownServlet extends HttpServlet{
public static Logger log = Logger.getLogger(MessageFileDownServlet.class);
/**
*
*/
private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
DataSource ds = (DataSource) wac.getBean("dataSource");
Long id = new Long(request.getParameter("id")==null?"0":request.getParameter("id"));
java.sql.Blob blob = JDBCFile.downMessageFile(ds, id);
InputStream ins = blob.getBinaryStream();
ServletOutputStream fout = response.getOutputStream();
//下面将BLOB数据写入文件
byte[] b = new byte[Contants.BUFFERSIZE];
int len = 0;
while((len = ins.read(b)) != -1) {
fout.write(b, 0, len);
if(Contants.SLEEPTIME>0){
try {
Thread.currentThread().sleep(Contants.SLEEPTIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} //依次关闭
fout.close();
ins.close();
} catch (Exception e) {
log.error(e);
}
}}
我在servlt中处理附件下载,想控制下载的速度,可是当加入这个代码
if(Contants.SLEEPTIME>0){
try {
Thread.currentThread().sleep(Contants.SLEEPTIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
下载的速度是得到控制了,可是压力测试只能上到400用户了,不要那段代码压力测试上到2000用户都没有问题.
不知道什么原因啊>.................package com.gdbeim.oa.struts.message;import java.io.IOException;
import java.io.InputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;import com.gdbeim.commons.Contants;
import com.gdbeim.oa.struts.commons.JDBCFile;public class MessageFileDownServlet extends HttpServlet{
public static Logger log = Logger.getLogger(MessageFileDownServlet.class);
/**
*
*/
private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
DataSource ds = (DataSource) wac.getBean("dataSource");
Long id = new Long(request.getParameter("id")==null?"0":request.getParameter("id"));
java.sql.Blob blob = JDBCFile.downMessageFile(ds, id);
InputStream ins = blob.getBinaryStream();
ServletOutputStream fout = response.getOutputStream();
//下面将BLOB数据写入文件
byte[] b = new byte[Contants.BUFFERSIZE];
int len = 0;
while((len = ins.read(b)) != -1) {
fout.write(b, 0, len);
if(Contants.SLEEPTIME>0){
try {
Thread.currentThread().sleep(Contants.SLEEPTIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} //依次关闭
fout.close();
ins.close();
} catch (Exception e) {
log.error(e);
}
}}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货