miller
发布于

mysql 不同timeout. vs httpClient timeout

jdbc-url:

jdbc:mysql://127.0.0.1:3306/xxxxx?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC

connectTimeout

connectTimeout:单位为毫秒 . 表示的是数据库驱动(mysql-connector-java) 与 mysql服务器建立TCP连接的超时时间。属于TCP层面的超时。

socketTimeout: CommunicationsException MySQLNonTransientConnectionException

:是通过TCP连接发送数据(要执行的sql)后,等待响应的超时时间。

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

这是 httpClient相关的 单位都是毫秒

https://zhuanlan.zhihu.com/p/664507365

 RequestConfig requestConfig = RequestConfig
            .custom()
            /*
             * 从连接池中获取连接的超时时间,假设:连接池中已经使用的连接数等于setMaxTotal,新来的线程在等待1*1000
             * 后超时,错误内容:org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
             */
            .setConnectionRequestTimeout(1*1000)
            /*
             * 这定义了通过网络与服务器建立连接的超时时间。
             * Httpclient包中通过一个异步线程去创建与服务器的socket连接,这就是该socket连接的超时时间,
             * 此处设置为2秒。假设:访问一个IP,192.168.10.100,这个IP不存在或者响应太慢,那么将会返回
             * java.net.SocketTimeoutException: connect timed out
             */
            .setConnectTimeout(5*1000)
            /*
             * 指的是连接上一个url,获取response的返回等待时间,假设:url程序中存在阻塞、或者response
             * 返回的文件内容太大,在指定的时间内没有读完,则出现
             * java.net.SocketTimeoutException: Read timed out
             */
            .setSocketTimeout(30*1000)
            .build();

扩展

https://www.51cto.com/article/720525.html

浏览 (482)
点赞
收藏
评论