你應該知道的那些超時設置或默認參數

原文地址:http://my.oschina.net/zhengyun/blog/138802


最後 更新於2013年6月19日
  • 存儲介質
    • Redis
      • Java-Driver
        • Jedis
          • 連接池:Jedis的連接池設計基於 Apache Commons-Pool 原生庫:
            1. maxActive:可用連接實例的最大數目,默認值爲8;
            2. maxIdle:空閒連接實例的最大數目,默認值也是8;
            3. minIdle:空閒連接實例的最小數目,默認值爲0;
            4. maxWait:等待可用連接的最大數目,單位毫秒,默認值爲-1,表示永不超時。
    • mongodb
      • Server端的連接數
        • maxConns:mongodb 實例的最大連接數限制可以通過啓動參數中的 maxConns 設置。默認值取決於系統的限制(如 ulimit 和 file descriptor)。如果沒設置這個參數, mongodb 自己不會限制連接數。但,你不能設置超過 20,000 。
      • client端的連接
        • Java-Driver
          1. MongoOptions.maxWaitTime:連接上阻塞線程的最大等待時間,默認值120秒;
          2. MongoOptions.connectTimeout:建立新連接超時時間(鄭昀注: Only used for new connections), 默認無限制;
          3. MongoOptions.socketTimeout:socket通訊超時時間,默認無限制;
          4. MongoOptions.connectionsPerHost:每個Application與 MongoDB 實例能建立的最大物理連接數,默認是10;
          5. MongoOptions.threadsAllowedToBlockForConnectionMultiplier:可以等待池中有連接可用的最大線程數,默認是5。
    • mysql
      • Server端的超時設置
        1. innodb_lock_wait_timeout:一個 InnoDB 事務遇到一個行鎖,等待的超時時間,默認值50秒,屆時會打印“Lock wait timeout exceeded; try restarting transaction”錯誤;
        2. wait_timeout:服務器關閉非交互連接之前等待活動的秒數,默認值28800秒(即8小時);
        3. connect_timeout:在獲取鏈接時,等待握手的超時時間,只在登錄時有效,默認值10秒。
      • JDBC
        • ibatis
          • SqlMapConfig.xml 配置文件
            1. maxTransactions:最大併發事務數。默認值爲32。指的是同時進入 SqlMapClient.startTransaction()的最大線程數。大於這個值的線程將阻塞直到另一個線程退出。不同的 DBMS 有不同的限制值,但任何數據庫都有這些限制。這個參數值應該總是小於或等於 maxSessions 並總是遠遠小於 maxRequests。減小這個參數值通常能提高性能;
            2. maxRequests:最大併發請求數(Statement併發數)。默認值爲 512。指的是同時執行 SQL 語句的最大線程數。大於這個值的線程將阻塞直到另一個線程執行完成。不同的 DBMS有不同的限制值,但任何數據庫都有這些限制。通常這個值應該至少是 maxTransactions 的 10 倍,並且總是大於 maxSessions 和 maxTranactions。減小這個參數值通常能提高性能;
            3. maxSessions:最大Session 數。即當前最大允許的併發SqlMapClient數。maxSessions設定必須介於maxTransactions和maxRequests之 間,即maxTransactions<maxSessions=<maxRequests。默認值爲128。
            4. defaultStatementTimeout:Statement 的執行超時時間,單位爲秒。如果沒有指明,查詢將無超時時間限制,除非在映射文件中設置Statement屬性值。
    • memcache
      • PHP-Driver
        • Memcache::connect 函數傳入的 timeout 參數代表連接超時時間,單位秒。默認值1秒。鄭昀注:修改此值之前請三思,過長的連接超時時間可能會導致失去所有的緩存優勢。 
      • Java-Driver
        • spymemcached
          • opTimeout :代表操作超時時間,默認值2.5秒;
        • xmemcahced 
          • opTimeout 的定義與 spymemcached 一樣,默認值1秒;
  • WebServer
    • Nginx
      1. fastcgi_connect_timeout:同 FastCGI 服務器的連接超時時間,默認值60秒。鄭昀注:它不能超過75秒新請求在等待 fastcgi_connect_timeout 秒後就收到 504 Gateway Time-out 錯誤;
      2. fastcgi_send_timeout: Nginx 進程向 FastCGI 進程發送 request ,整個過程的超時時間,默認值60秒;
      3. 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。
  • 中間件
    • ActiveMQ
      • Server端設置
        1. wireFormat.maxInactivityDuration:設置心跳時間,默認值是30秒;
        2. initialReconnectDelay:第一次重連的時間間隔(毫秒),默認值爲10;
        3. maxReconnectDelay:最長重連的時間間隔(毫秒),默認值爲30秒;
        4. useExponentialBackOff:重連時間間隔是否以指數形式增長,默認值爲true;
        5. startupMaxReconnectAttempts:初始化時的最大重連次數。一旦連接上,將使用maxReconnectAttempts的配置,默認值爲0;
        6. maxReconnectAttempts:自版本5.6起:-1爲默認值,代表不限重試次數;0代表從不重試(只嘗試連接一次,並不重連)。5.6以前的版本:0爲默認值,代表不限重試次數。所有版本:如果設置爲大於0的數,代表最大重試次數;
        7. randomize:使用隨機鏈接(鄭昀:達到負載均衡的目的),默認值爲true;
        8. timeout:設置發送操作的總計最大超時時間(毫秒),默認值爲-1。
      • 生產者流量控制
        • 觸發條件有三個:
          • 不管 mq 有無做持久化配置:
            • ActiveMQ所使用的內存到達 memoryUsage 配置值,默認值64MB;
          • 如果 mq 做了持久化配置:
            • 要打開了 useCache 開關,表明要將持久化消息緩存起來以便快速訪問,默認是True;
            • 緩存在內存中消息總字節數到達 memoryLimit 配置值,默認值是1MB;

 
-待續-

發佈了133 篇原創文章 · 獲贊 228 · 訪問量 430萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章