當前位置:首頁 » 數據倉庫 » 生產環境如何配置線程數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

生產環境如何配置線程數

發布時間: 2022-11-25 05:39:13

① win10怎麼設置cpu線程

win10系統用戶想要通過設置cpu核心數來控制電腦性能,但是卻不知道要如何設置cpu核心數..
1、在設置之前我們先看一下當前處理器的核心數,在Win10下按下WIN+X組合鍵,然後點擊「設備管理器」;

心數

2、在設備列表中,展開「處理器」選項,我們就可以看到同樣名稱的一些設備,這些就是CPU了,有幾個代表幾核心(intel CPU有些代表線程數);
接下來我們設置CPU核心數:
1、按Win+R鍵,輸入msconfig點擊確定打開系統配置窗口;

2、點擊「引導」選項,選擇「高級選項」點擊 確定按鈕;
3、打開引導高級選項頁面,勾選處理器個數,選擇需要的個數,點擊確定保存,返回上一頁面點擊應用,再點擊確定重啟電腦即可生效!

如何配置Spring Boot內嵌的tomcat8的最大線程數,最大連接數

tomcat最大線程數的設置
Tomcat的server.xml中連接器設置如下
<Connector
port="8080"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
debug="0"
connectionTimeout="20000"
disableUploadTimeout="true"
/>
<Connector
port="8080"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
debug="0"
connectionTimeout="20000"
disableUploadTimeout="true"
/>
tomcat在配置時設置最大線程數,當前線程數超過這個數值時會出錯,那麼有沒有辦法捕獲到這個錯誤,從而在client端顯示出錯信息?
2.
如何加大tomcat連接數
在tomcat配置文件server.xml中的<Connector
/>配置中,和連接數相關的參數有:
minProcessors:最小空閑連接線程數,用於提高系統處理性能,默認值為10
maxProcessors:最大連接線程數,即:並發處理的最大請求數,默認值為75
acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設置為false
connectionTimeout:網路連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
其中和最大連接數相關的參數為maxProcessors和acceptCount。如果要加大並發連接數,應同時加大這兩個參數。
web
server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。tomcat5中的配置示例:
<Connector
port="8080"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
debug="0"
connectionTimeout="20000"
disableUploadTimeout="true"
/>
對於其他埠的偵聽配置,以此類推。
3.
tomcat中如何禁止列目錄下的文件
在{tomcat_home}/conf/web.xml中,把listings參數設置成false即可,如下:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
4.如何加大tomcat可以使用的內存
tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。
Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:
JAVA_OPTS='-Xms【初始化內存大小】
-Xmx【可以使用的最大內存】'
需要把這個兩個參數值調大。例如:
JAVA_OPTS='-Xms256m
-Xmx512m'
表示初始化內存為256MB,可以使用的最大內存為512MB

③ 如何調整WEBLOGIC 11G 線程數

WEBLOGIC
11G
線程數的線程數都是自調節的,當然,自己也可以做初始值和最大值的設置,那就需要進行配置文件的修改或者啟動參數的修改:
第一方法:直接在啟動命令里加上.
-Dweblogic.threadpool.MinPoolSize=800
-Dweblogic.threadpool.MaxPoolSize=800
第二方法:直接在配置文件中加上
1,在CONFIG.XML中的
<server>
<name>server_name</name>
<self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-size-min>
<self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-size-max>
...
</server>
2、在startweblogic.cmd腳本中加入一下java啟動參數:
-Dweblogic.configuration.schemaValidationEnabled=false
(注我在11G上加不加這個上面配置的線程數都可以用)

④ jvm - 常用調優啟動參數配置

可以看到堆內存為2G,新生代為768M老年代為1280M,新生代採用ParNew收集器
-XX:+UseConcMarkSweepGC:新生代使用ParNew回收器,老年代使用CMS
線程棧為512k(默認1024k調小可以增加創建線程數,增加並發量)
同時列印 GC 詳細信息和列印 GC 發生時間,當發生OOM時,Dump文件到指定路徑

棧空間參數設置
-Xss: 設置線程的最大棧空間,棧空間越大,方法的遞歸深度越大

方法區參數設置(方法區大小的參數設置跟jdk版本相關)
jdk1.6,jdk1.7設置方法區永久代的大小
-XX:PermSize=5M
-XX:MaxPermSize=5M 最大永久代的大小默認是64M
jdk1.8及以上,永久代被移除,取而代之的是元數據區,元數據區是一塊堆外的直接內存
如果不指定大小,那麼會耗盡所有可用的系統內存
-XX:MaxMetaspaceSize=60M 設置最大元數據的大小

堆設置
-Xms:初始堆大小
-Xmx:最大堆大小
-Xmn:設置新生代大小,設置較大的新生代大小會減小老年代大小,新生代的大小一般為堆空間的1/3
-XX:NewSize=n: 設置年輕代大小
-XX:NewRatio=n:設置年輕代和年老代的比值(老年代/新生代)。如:為3,表示年輕代與年老代比值為1:3
年輕代占整個年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。

-Xmn,-XX:NewSize/-XX:MaxNewSize,-XX:NewRatio 3組參數都可以影響年輕代的大小,混合使用的情況下,優先順序是什麼?

1.高優先順序:-XX:NewSize/-XX:MaxNewSize
2.中優先順序:-Xmn(默認等效 -Xmn=-XX:NewSize=-XX:MaxNewSize=?)
3.低優先順序:-XX:NewRatio
推薦使用-Xmn參數,原因是這個參數簡潔,相當於一次設定 NewSize/MaxNewSIze而且兩者相等,適用於生產環境。
-Xmn 配合 -Xms/-Xmx,即可將堆內存布局完成 -Xmn參數是在JDK 1.4 開始支持

下面兩個參數配合使用,當系統發生堆空間不足時,會導出整個堆的信息,且導出到指定的文件中去,後面用MAT工具分析
-XX:HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=d:/a.mp
直接內存配置
-XX:MaxDirectMemorySize
設置直接內存大小,如果不設置,默認值為最大堆空間,即-Xmx指定的大小,當達到指定值時,
會觸發垃圾回收,如果回收後也無法釋放空間,那麼將會拋出OOM

-XX:+UseSerialGC:新生代,老年代都使用串列收集器
-XX:+UseParNewGC:新生代使用ParNew收集器,老年代使用串列收集器Serial
(jdk9,10已經廢除,因為ParNew只能和CMS收集器配合使用,而jdk9,10使用的默認收集器是G1)
-XX:+UseParallelGC:新生代使用ParallelGC,老年代使用串列收集器Serial

-XX:+UseParallelGC:新生代使用ParallelGC回收器,老年代使用串列回收器Serial
-XX:+UseParallelOldGC:新生代使用ParallelGC回收器,老年代使用ParallelOldGc回收器

兩個重要參數
-XX:MaxGCPasuseMillis:設置最大垃圾回收停頓時間,設置的過小,可能導致垃圾回收頻率加大
-XX:GCTimeRatio:設置吞吐量大小,取值范圍為0-100,系統回收垃圾的停頓時間花費不超過1/(1+n)%

設置線程數量
-XX:ParallelGCThreads

-XX:+UseConcMarkSweepGC:新生代使用ParNew回收器,老年代使用CMS
CMS默認啟動的並發線程數量為(parallelGCTheads+3)/4

設置並發線程數
-XX:ConcGCThreads=n
-XX:ParallelGCThreads=n

設置老年代空間使用率達到多少時執行CMS垃圾回收
-XX: 默認值為68

碎片整理參數,如果碎片不整理,可能造成沒達到閾值就會觸發老年代垃圾回收
-XX:+UseCMSCompactAtFullCollection :在CMS垃圾收集完成之後,進行一次內存碎片整理
-XX:+CMSFullGCsBeforeCompaction=n :在n次CMS回收後進行一次內存碎片整理

使用CMS回收方法去的perm區,默認情況下,還需要觸發一次FullGC
-XX:+CMSClassUnloadingEnabled

XX:UseG1GC 開啟G1垃圾收集器

兩個重要的參數
-XX:MaxGcPasuseMillis :指定目標最大停頓時間,如果停頓的時間過小,一次收集的區域數量也會變小
就會增加FullGC的可能

-XX:parallelGCThreads :設置並行回收的GC線程數量

-XX: :設置整個堆使用率達到多少時,觸發並發標記的執行,默認是45

-XX:+PrintGC 在程序運行期間,只要遇到GC,就會列印GC情況
佔用大小->gc後大小 GC消耗時間
jdk9,jdk10默認使用G1收集器,所以列印GC參數不同
-Xlog:gc

-XX:+PrintGCDetails 列印GC詳細信息(JDK8,9,10建議使用-Xlog:gc*)
-XX:+PrintGCTimeStamps 列印分析GC發生的時間
-XX:+ 列印應用程序的執行時間
-XX:+PrintGCApplicationStoppedTime 列印GC產生停頓的時間
-Xloggc:/usr/local/log/gc.log 讓gc日誌列印在log文件夾下的gc文件中,因為默認情況下gc日誌在控制台輸出

棧上分配,逃逸分析(方法內的變數被外部引用)
允許對象直接在棧上進行分配,隨線程停止而銷毀,這樣做可以加快分配速度,減少GC次數
棧空間較小,所以不適合大對象的棧上分配

-XX:+DoEscapeAnalysis 啟用逃逸分析
-XX:+EliminateAllocations 開啟標量替換(默認打開),允許對象打散分配在棧上
比如對象擁有id和name兩個欄位,那麼這兩個欄位將會被視為兩個獨立的變數進行分配。
對象晉升
-MaxTenuringThreshold=n ,當對象經歷了多少次GC次數後進入老年代
注意:大對象直接晉升到老年代
-PretenureSizeThreshold=n 這里的單位是位元組,新生對象大於這個值的時候,會直接分配到老年代

1、對存活對象標注時間過長:比如重載了Object類的Finalize方法,導致標注Final Reference耗時過長;或者String.intern方法使用不當,導致YGC掃描StringTable時間過長。

2、長周期對象積累過多:比如本地緩存使用不當,積累了太多存活對象;或者鎖競爭嚴重導致線程阻塞,局部變數的生命周期變長

當Eden區空間不足時,就會觸發YGC。結合新生代對象的內存分配看下詳細過程:

1、新對象會先嘗試在棧上分配,如果不行則嘗試在TLAB分配,否則再看是否滿足大對象條件要在老年代分配,最後才考慮在Eden區申請空間。

2、如果Eden區沒有合適的空間,則觸發YGC。

3、YGC時,對Eden區和From Survivor區的存活對象進行處理,如果滿足動態年齡判斷的條件或者To Survivor區空間不夠則直接進入老年代,如果老年代空間也不夠了,則會發生promotion failed,觸發老年代的回收。否則將存活對象復制到To Survivor區。

4、此時Eden區和From Survivor區的剩餘對象均為垃圾對象,可直接抹掉回收。

此外,老年代如果採用的是CMS回收器,為了減少CMS Remark階段的耗時,也有可能會觸發一次YGC,這里不作展開。

大多數情況下,對象直接在年輕代中的Eden區進行分配,如果Eden區域沒有足夠的空間,那麼就會觸發YGC(Minor GC),YGC處理的區域只有新生代。因為大部分對象在短時間內都是可收回掉的,因此YGC後只有極少數的對象能存活下來,而被移動到S0區(採用的是復制演算法)。當觸發下一次YGC時,會將Eden區和S0區的存活對象移動到S1區,同時清空Eden區和S0區。當再次觸發YGC時,這時候處理的區域就變成了Eden區和S1區(即S0和S1進行角色交換)。每經過一次YGC,存活對象的年齡就會加1。

下面4種情況,對象會進入到老年代中:

當晉升到老年代的對象大於了老年代的剩餘空間時,就會觸發FGC(Major GC),FGC處理的區域同時包括新生代和老年代。除此之外,還有以下4種情況也會觸發FGC:

⑤ java多線程,怎麼算出最佳的生產消費的配比比例

這和生產者和消費者線程耗時有關,

最簡單的一個公式:

生產者線程數*消費者平均耗時=消費者線程數*生產者平均耗時

得出:生產者線程數/消費者線程數=消費者平均耗時/生產者平均耗時。

得出比例後就需要確定具體的線程數了,線程數需要根據業務量大小確實,這個沒辦法根據公式計算。同時,線程數還受到應用類型和cpu核心數的影響,一般說來,大家認為線程池的大小經驗值應該這樣設置:(其中N為CPU的個數)

  • 如果是CPU密集型應用,則線程池大小設置為N+1

  • 如果是IO密集型應用,則線程池大小設置為2N+1

總之線程的配置是一個比較繁瑣的過程,需要通過不斷的試驗找到最佳的配置。

⑥ Java如何依據cpu核數設置合適的線程數

1:獲取cpu核心數:

Runtime.getRuntime().availableProcessors();

創建線程池:

Executors.newFixedThreadPool(nThreads);//nThreads為線程數

2:這個只要伺服器內存夠大,CPU核心數較多,處理數據比較強就好了,注意不要一下分配幾千個線程,可 能會導致堆棧溢出的,這樣程序就掛了,因為線程很費內存資源

⑦ openmp怎麼用函數配置線程數

在這里,先回顧一下OpenMP的parallel並行區域線程數量的確定,對於一個並行區域,有一個team的線程去執行,那麼該分配多少個線程去執行呢?

OpenMP的遇到parallel指令後創建的線程team的數量由如下過程決定:
1. if子句的結果
2. num_threads的設置
3. omp_set_num_threads()庫函數的設置
4. OMP_NUM_THREADS環境變數的設置
5. 編譯器默認實現(一般而言,默認實現的是匯流排程數等於處理器的核心數)
(http://blog.csdn.net/gengshenghong/article/details/6956878查看更多信息)

2、3、4優先順序依次降低的,也就是前面的設置可以覆蓋後面的設置,當然也是相對而言,num_threads子句只會影響當前的並行區域,而omp_set_num_threads對OMP_NUM_THREADS環境變數的覆蓋是在整個程序運行期間全局的。
(2)幾個容易混淆的OpenMP函數
1. omp_get_thread_num
獲取線程的num,即ID。這里的ID是OpenMP的team內的ID,在OpenMP中,一個team內的線程的ID是俺順序排列的,0、1、2...
說明:此函數在並行區域外或者並行區域內都可以調用。在並行區域外,獲取的是master線程的ID,即為0。在並行區域內,每次執行到此函數,獲取的是當前執行線程的ID。

⑧ 如何配置最大工作線程數

配置最大工作線程數
在對象資源管理器中,右鍵單擊伺服器並選擇「屬性」。
單擊「處理器」節點。
在「最大工作線程數」框中,鍵入或選擇一個介於 128 到 32767 之間的值。
使用 max worker threads 選項配置可用於 SQL Server 進程的工作線程數。max worker threads 的默認設置適用於大多數系統。不過,根據您的系統配置,有時將 max worker threads 設置為較小的值會提高性能。

⑨ 如何設置netty工作的線程數

.net4.0,32位機器最大線程數,每核1023個 .net4.0,64位機器最大線程數,每核32768個 .net3.0,最大線程數,每核250個 .net2.0,最大線程數,每核25個 默認的最小線程數是每核1個。在伺服器端環境,比如iis下的asp.net最小線程數會更大可能超過50

⑩ 生產環境線程池配置與開發環境有什麼不同

settings --__init__.py --common.py --dev.py --uat.py --pro.py common.py裡面配置通用部分 dev.py、uat.py、pro.py裡面配置開發、測試、生產環境不同的配置 __init__.py裡面 from common import * #from dev import * #from uat import * #fr...