问题1,如果用jdbc链接数据库,如果较多人(几千人)同时登陆,会不会使崩溃
问题2,我用tomcat连接池链接数据库,服务器运行一段时间就崩了
各个配置如下:
首先tomcat server.xml配置连接池和工程
<Resource name="jdbc/sqlserver" auth="Container"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
type="javax.sql.DataSource"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=sports"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
username="sa"
password="159951"
maxActive="100"
maxIdle="30"
maxWait="10000" /> <Connector port="80" maxHttpHeaderSize="8192"
maxThreads="200" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Context path="" docBase="G:\ancester" reloadable="true">
<ResourceLink name = "jdbc/sqlserver" global = "jdbc/sqlserver" type= "javax.sql.DataSource"/>
</Context>
问题2,我用tomcat连接池链接数据库,服务器运行一段时间就崩了
各个配置如下:
首先tomcat server.xml配置连接池和工程
<Resource name="jdbc/sqlserver" auth="Container"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
type="javax.sql.DataSource"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=sports"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
username="sa"
password="159951"
maxActive="100"
maxIdle="30"
maxWait="10000" /> <Connector port="80" maxHttpHeaderSize="8192"
maxThreads="200" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Context path="" docBase="G:\ancester" reloadable="true">
<ResourceLink name = "jdbc/sqlserver" global = "jdbc/sqlserver" type= "javax.sql.DataSource"/>
</Context>
{
private Connection conn = null;
private Statement stmt=null;
private ResultSet rs=null; public SqlConn() throws SQLException
{
getStatement();
}
public void getStatement() throws SQLException
{
DataSource ds = null;
try
{
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/sqlserver");
if (ds != null)
{
conn = ds.getConnection();
}
}catch(Exception e)
{
e.printStackTrace();
}
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} public ResultSet getResultset(String sql) throws SQLException
{
rs = stmt.executeQuery(sql);
return rs;
} public int executeSql(String sql) throws SQLException
{
int rs = stmt.executeUpdate(sql); return rs;
} public void dbClose()
{
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}catch (SQLException e)
{
System.out.println(e);
}
}
}
SqlConn db=null;
ResultSet rs=null;
try{
db=new SqlConn();
String sql_resource="select top 13 * from resource order by id desc ";//取得最后10条记录
rs=db.getResultset(sql_resource);
while(rs.next())
{}
%><br><%
String sql_news="select top 11 * from news where show='yes' order by id desc ";//取得最后10条记录
//out.print(sql_news);
rs=db.getResultset(sql_news);
out.print("<ul>");
while(rs.next())
{}
%><%String sql_notice="select top 5 * from news where type='公告' order by id desc ";//取得最后10条记录
//out.print(sql_news);
rs=db.getResultset(sql_notice);
out.print("<ul>");
while(rs.next())
{
}
%>
<%
String sql_scrollPic="select * from srollPic order by id desc";
rs=db.getResultset(sql_scrollPic);
while(rs.next())
{
}}catch(Exception e)
{
System.out.println("----------------------------------index exception");
e.printStackTrace();
}finally{
db.dbClose();
}
%>
{
SqlConn sqlconn=null;
ResultSet rs=null;
try{
sqlconn=new SqlConn();
rs=sqlconn.getResultset(sql_students_count);
if(rs.next())
{
if(rs.getInt(1)<400)//同时选择这个时间的人数 不能大于4 否则返回错误信息
{
sqlconn.executeSql(sql_students_regist);
return "succ";
}
else//人数超了
{
return "full";
}
}
else
{
return "server";
}
}catch(Exception e)
{
e.printStackTrace();
System.out.println("-----------------------------------test_action.jsp exception");
return "server";
}
finally{
sqlconn.dbClose();
}
}
这要看服务器的性能和你代码的性能的,各方面都控制好了就应该不会崩的.
少数人没问题 人一多就完了
下的server.xml配置文件中设置tomcat的最大连接数:
<Connector
port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
把acceptCount属性设置一下就可以了
他们是用什么服务器 怎么解决的呢?几千人用一个服务器就必须要分压么?