你應該知道的那些超時設定或預設引數
阿新 • • 發佈:2019-02-15
原文地址:http://my.oschina.net/zhengyun/blog/138802
最後 更新於2013年6月19日- 儲存介質
- Redis
- Java-Driver
- Jedis
- 連線池:Jedis的連線池設計基於Apache
Commons-Pool原生庫:
- maxActive:可用連線例項的最大數目,預設值為8;
- maxIdle:空閒連線例項的最大數目,預設值也是8;
- minIdle:空閒連線例項的最小數目,預設值為0;
- maxWait:等待可用連線的最大數目,單位毫秒,預設值為-1,表示永不超時。
- 連線池:Jedis的連線池設計基於Apache
Commons-Pool原生庫:
- Jedis
- Java-Driver
- mongodb
- Server端的連線數
- maxConns:mongodb 例項的最大連線數限制可以通過啟動引數中的 maxConns 設定。預設值取決於系統的限制(如 ulimit 和 file descriptor)。如果沒設定這個引數,
mongodb 自己不會限制連線數。但,你不能設定超過 20,000 。
- maxConns:mongodb 例項的最大連線數限制可以通過啟動引數中的 maxConns 設定。預設值取決於系統的限制(如 ulimit 和 file descriptor)。如果沒設定這個引數,
mongodb 自己不會限制連線數。但,你不能設定超過 20,000 。
- client端的連線
- Java-Driver
- MongoOptions.maxWaitTime:連線上阻塞執行緒的最大等待時間,預設值120秒;
- MongoOptions.connectTimeout:建立新連線超時時間(鄭昀注: Only used for new connections), 預設無限制;
- MongoOptions.socketTimeout:socket通訊超時時間,預設無限制;
- MongoOptions.connectionsPerHost:每個Application與 MongoDB 例項能建立的最大物理連線數,預設是10;
- MongoOptions.threadsAllowedToBlockForConnectionMultiplier
- Java-Driver
- Server端的連線數
- mysql
- Server端的超時設定
- innodb_lock_wait_timeout:一個 InnoDB 事務遇到一個行鎖,等待的超時時間,預設值50秒,屆時會列印“Lock wait timeout exceeded; try restarting transaction”錯誤;
- wait_timeout:伺服器關閉非互動連線之前等待活動的秒數,預設值28800秒(即8小時);
- connect_timeout:在獲取連結時,等待握手的超時時間,只在登入時有效,預設值10秒。
- JDBC
- ibatis
- SqlMapConfig.xml 配置檔案
- maxTransactions:最大併發事務數。預設值為32。指的是同時進入 SqlMapClient.startTransaction()的最大執行緒數。大於這個值的執行緒將阻塞直到另一個執行緒退出。不同的 DBMS 有不同的限制值,但任何資料庫都有這些限制。這個引數值應該總是小於或等於 maxSessions 並總是遠遠小於
maxRequests。減小這個引數值通常能提高效能;
- maxRequests:最大併發請求數(Statement併發數)。預設值為 512。指的是同時執行 SQL 語句的最大執行緒數。大於這個值的執行緒將阻塞直到另一個執行緒執行完成。不同的 DBMS有不同的限制值,但任何資料庫都有這些限制。通常這個值應該至少是 maxTransactions 的 10 倍,並且總是大於 maxSessions 和 maxTranactions。減小這個引數值通常能提高效能;
- maxSessions:最大Session 數。即當前最大允許的併發SqlMapClient數。maxSessions設定必須介於maxTransactions和maxRequests之 間,即maxTransactions<maxSessions=<maxRequests。預設值為128。
- defaultStatementTimeout:Statement的執行超時時間,單位為秒。如果沒有指明,查詢將無超時時間限制,除非在對映檔案中設定Statement屬性值。
- maxTransactions:最大併發事務數。預設值為32。指的是同時進入 SqlMapClient.startTransaction()的最大執行緒數。大於這個值的執行緒將阻塞直到另一個執行緒退出。不同的 DBMS 有不同的限制值,但任何資料庫都有這些限制。這個引數值應該總是小於或等於 maxSessions 並總是遠遠小於
maxRequests。減小這個引數值通常能提高效能;
- SqlMapConfig.xml 配置檔案
- ibatis
- Server端的超時設定
- memcache
- PHP-Driver
- Memcache::connect 函式傳入的timeout引數代表連線超時時間,單位秒。預設值1秒。鄭昀注:修改此值之前請三思,過長的連線超時時間可能會導致失去所有的快取優勢。
- Java-Driver
- spymemcached
- opTimeout:代表操作超時時間,預設值2.5秒;
- xmemcahced
- opTimeout 的定義與 spymemcached 一樣,預設值1秒;
- spymemcached
- PHP-Driver
- Redis
- WebServer
- Nginx
- fastcgi_connect_timeout:同 FastCGI 伺服器的連線超時時間,預設值60秒。鄭昀注:新請求在等待 fastcgi_connect_timeout 秒後就收到 504 Gateway Time-out 錯誤;
- fastcgi_send_timeout: Nginx 程序向 FastCGI 程序傳送 request ,整個過程的超時時間,預設值60秒;
- fastcgi_read_timeout: FastCGI 程序向 Nginx 程序傳送 response ,整個過程的超時時間,預設值60秒。
- PHP
- PHP-FPM 模式
- max_execution_time引數不太起效,它控制的是程序的CPU佔用時間,預設值30秒;
- 鄭昀注:set_time_limit()函式和配置指令max_execution_time隻影響指令碼本身執行的時間。任何發生在諸如使用 system()的系統呼叫,流操作,資料庫操作等的指令碼執行的最大時間不包括其中,當該指令碼已執行。
- 真正起作用的是 php-fpm.conf 裡的 <value name="request_terminate_timeout">0s</value>, 它的含義是 The timeout (in seconds) for serving a single request after which the worker process will be terminated;預設值0,即off。
- max_execution_time引數不太起效,它控制的是程序的CPU佔用時間,預設值30秒;
- PHP-FPM 模式
- Nginx
- 中介軟體
- ActiveMQ
- Server端設定
- wireFormat.maxInactivityDuration:設定心跳時間,預設值是30秒;
- initialReconnectDelay:第一次重連的時間間隔(毫秒),預設值為10;
- maxReconnectDelay:最長重連的時間間隔(毫秒),預設值為30秒;
- useExponentialBackOff:重連時間間隔是否以指數形式增長,預設值為true;
- startupMaxReconnectAttempts:初始化時的最大重連次數。一旦連線上,將使用maxReconnectAttempts的配置,預設值為0;
- maxReconnectAttempts:自版本5.6起:-1為預設值,代表不限重試次數;0代表從不重試(只嘗試連線一次,並不重連)。5.6以前的版本:0為預設值,代表不限重試次數。所有版本:如果設定為大於0的數,代表最大重試次數;
- randomize:使用隨機連結(鄭昀注:達到負載均衡的目的),預設值為true;
- timeout:設定傳送操作的總計最大超時時間(毫秒),預設值為-1。
- 生產者流量控制
- 觸發條件有三個:
- 不管 mq 有無做持久化配置:
- ActiveMQ所使用的記憶體到達memoryUsage配置值,預設值64MB;
- 如果 mq 做了持久化配置:
- 要打開了useCache開關,表明要將持久化訊息快取起來以便快速訪問,預設是True;
- 快取在記憶體中訊息總位元組數到達memoryLimit配置值,預設值是1MB;
- 不管 mq 有無做持久化配置:
- 觸發條件有三個:
- Server端設定
- ActiveMQ