@SuppressWarnings("serial")
public class Servlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
Connection conn = null;
//public static HashMap<String, String> hm = new HashMap<String, String>();
//@Override
DataSource ds = null;
InitialContext ctx;
try {
ctx = new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
try {
Statement stmt = conn.createStatement();
stmt.executeQuery("SET NAMES 'utf8mb4'; ");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
res.setContentType("text/plain;charset=UTF-8");
PrintWriter pw = res.getWriter();
try {
Statement stmt = conn.createStatement();
// stmt.executeQuery("SET NAMES 'utf8mb4';");
String teamInfo="161Santiago,5116-5676-4069,5495-6396-6111,2681-5891-9531\n";
ResultSet rs = null;
String info = req.getQueryString();
String[] sp = info.split("&");
String[] child0 = sp[0].split("=");
String[] child1 = sp[1].split("=");
String sqlString = "select * from tweets where timeandid=\"" + child1[1] + child0[1] + "\"";
rs= stmt.executeQuery(sqlString);
//pw.println(teamInfo);
rs.next();
String a= rs.getString(2);
//a=a.replaceAll("\t\n","\n");
teamInfo = teamInfo +rs.getString(3) + ":" + rs.getString(4).trim()+ ":" +a + "\n";
pw.print(teamInfo);
pw.flush();
rs.close();
stmt.close();
}
catch (SQLException ex){
System.out.println(ex);
}finally{System.out.println("over");}
pw.close();
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
只有一个servlet代码如上,在doget里面接受请求,然后用连接池取得数据库连接,进行查找,而后用pwwriter进行输出,而后关闭连接,但是进行测试的时候(一分钟上万条请求),用的tomcat6 server就会停止响应,而后返回error,要求达到每分钟5000的请求处理数,但是现在只有50左右,相差太大
[color=#000000]请教一下怎么写这种结构能在达访问量的情况下保持不崩溃?感激不尽[/color]
at java.net.SocketInputStream.socketRead0(Native Method); at java.net.SocketInputStream.read(SocketInputStream.java:152); at java.net.SocketInputStream.read(SocketInputStream.java:122); at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:166); at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:90); at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:281); at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:92); at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:61); at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254); at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289); at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252); at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191); at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300); at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127); at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:715); at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:520); at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906); at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805); at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:475); at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:295); at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74); at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1105); at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1094); at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:429); at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257); at java.lang.Thread.run(Thread.java:745);
[color=#000000]请教一下怎么写这种结构能在达访问量的情况下保持不崩溃?感激不尽[/color]
------解决思路----------------------
这是tomcat的瓶颈了,了解下tomcat的集群吧http://blog.csdn.net/lifetragedy/article/details/7712691
------解决思路----------------------
Tomcat只能支撑几十个并发,需要一群Tomcat才能处理大并发。
------解决思路----------------------
大数据的问题不是单纯几个框架几个软件就能解决的,硬件很重要,你知道阿里巴巴有多少服务器么。