1. 程式人生 > >你應該知道的那些超時設定或預設引數

你應該知道的那些超時設定或預設引數

原文地址: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秒。鄭昀注:新請求在等待 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;
-待續-