本帖最后由 txspace 于 2011-07-15 11:12:48 编辑

解决方案 »

  1.   

    按理说MYSQL自己的缓存机制也开启了,因为我某几个页面会自动刷新,而查询的字符串都是一样的,那么应该对数据库照成的鸭梨是不大的,毕竟可以可以从缓存当中去取的,这个命中率是100%的
      

  2.   

    貌似有一个叫数据库负载均衡的技术,做mysql集群,据说人人网就是这么干的
    具体怎么做不晓得
    你可以调研一下这方面的技术
      

  3.   

    mysql集群
    tomcat集群页面缓存(静态化)---这个最有效果
      

  4.   

    1.页面静态化
    2.采用memcached
    3.优化sql
    4.优化代码,避免竞争资源过于激烈
    5.数据库分库,分表
      

  5.   

    我们公司的wap网站大概每天200W PV, 采用的4台tomcat服务器 + 一台数据库服务器 + 硬件缓存 + memcache + Nginx
      

  6.   

    首先,确保你的sql语句本身没太大性能问题,看看索引、性能参数等。其次,你直接jsp上面操作jdbc?还是servlet操作jdbc,把结果放入request,然后jsp用?如果前者,客户访问的时候,如果网速较慢,JSP还来不及执行到最后的释放操作,你的连接来不及释放,甚至可能因为某个更新操作的页面传输慢,卡死整个应用。所以需要改成后者。举个例子, 代码不规范。
    <% while (rs.next()) { %>
    <tr><td><%=rs.getString(1)%></td><td><%=rs.getString(2)%></td>.......
    ........
    ........
    <%}%>
    ........
    ........
    ........
    <% connection.close();%>
    如果访问这个网页的客户端速度较慢,而这个网页生成的东西又比较多,会导致需要较长时间在传输上,然后才能执行到最后的close或者类似操作。需要改成后面那种“servlet操作jdbc,把结果放入request,然后jsp用”的模式。当然,这种情况下,也应当尽早释放资源
      

  7.   

    另外,你tomcat或者apache之类的web服务器,有没有打开压缩功能?
      

  8.   

    sql语句并没有太大的性能问题,都是简单的查询,最多关联3张表,一张有2500条,一张300条,一张不到1500条,
    对数据库的操作是才用servlet操作jdbc,然后放如request,使用jstl页面展现。不过后台一直有一个socket线程再收取一些数据,每一秒至少有50KB的流量,差不多50条数据,并且都会去数据库查询。
      

  9.   

    读取比确实是很高,主要都是查询。
    资源每一次使用都会归还连接池的。这个我每一句代码都仔细检查过了。所以释放数据库连接应该是没有问题的。
    MYSQL自己的缓存不够用么。。
      

  10.   

    1、页面的东西是实时显示的。所以应该不能做静态话,否则的话不久有延迟?
    2、做这个是不是需要改动很多代码?
    3、sql都是简单的查询,最多关联3张表,并且都是小表
    4、代码的话这个就不清楚是否会引起资源竞争激烈
    5、都是小表,除了几张月份访问统计表有几百万条数据外。
      

  11.   

    我也是考虑两方面,一方面是SQL效率的优化,其次是使用缓存机制用于检索的结果频繁并且变化少的数据。
      

  12.   

    3个服务器配置都是 Intel(R) CPU E5506 @2.13GHz 2.13GHz 3.99GB的内存
    2个作为tomcat负载均衡,使用的是windows 2003 server 的网络负载平衡
    mysql独立一台
      

  13.   

    sql的话独立运行的话很快,最长不会超过1秒,
    缓存机制该用哪一种?不需要改动太多代码