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

    • 存儲介質
      • 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;
相關文章
相關標籤/搜索