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相关的 单位都是毫秒
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();