关于SSM+mysql框架大数据量的支持优化

来源:互联网 发布:天海翼 知乎 编辑:程序博客网 时间:2024/06/05 08:13

关于SSM+mysql框架大数据量的支持优化说明:

一、背景说明:

       1.  框架简要: 

                a.  上传数据:  ajax-->struct2-->java接收-->自有的DB处理框架-->存储数据库(mysql); 

                b.   获取数据:自有框架获得数据库数据-->json转换--> 客户端接收json-->展示

        2. ajax提交的数据超过2M,获得的数据也超过2M

        3. 问题;

                 a. mysql 数据库频繁报错:

Packet for query is too large(841859 >4194304).You can change this value on the server by setting the max_allowed_packet' variable.

                 b. JAVA class 整个类将无法接收请求, 请求报错:   

No result defined for action com.xxx.xxxAction and result input

                 c. ajax 超时请求,后台报错:

          

ClientAbortException:  java.net.SocketException: Software caused connection abort: socket write error

二、Struct2

  • struts.xml 增加如下配置, 更改框架对请求的限制。
  • <constant name="struts.multipart.maxSize" value="10000000"/>
三、tomcat server


在serve.xml的connector 节点配置如下:

<Connector port="8080" protocol="HTTP/1.1" maxPostSize="0"               redirectPort="8443" URIEncoding="UTF-8" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="120000" maxKeppAliveRequests="100"  keepAliveTimeOut="60000" maxConnections="300"/>


四、my.ini

max_allowed_packet=100M

配置完后,记得重启mysql 服务。


五、ajax

因为返回的数据量较大,当ajax请求已经超时时,服务器请求的接口还在处理,当返回时,找不到连接,将报如下错误:

ClientAbortException:  java.net.SocketException: Software caused connection abort: socket write error

此事,我们需要将ajax的请求调整:

$.ajax({            url:ajaxBase+'/site_toEnt',            type:'POST',            async:true,            data:{             id:id            },            timeout:120000,            dataType:'json',

以上,仅为现有的处理办法。


后续还有以下几点,还需要优化,共勉:

1. 上传数据的压缩处理(包含图片的压缩处理)

2. 上传数据存储,由数据库更改为文件存储(需要考虑并发的文件读取问题)。

3.  下发数据的压缩以及页面展示时的解压。

4.   分段请求


原创粉丝点击