EBS中OPP(Output Post Processor)的優化,主要能夠由下面3個方面來入手:java
Threads和Processes的設置能夠在併發管理器定義的頁面中看到,以下:
其中,2表明service threads的數量,max_threads參數控制request threads的數量。能夠根據須要增長max_threads的值(max_threads能夠說是定義OPP吞吐量的一個重要參數)。sql
Jvm memory argument能夠使用apps用戶登陸數據庫,運行下面sql獲得:數據庫
sqlSELECT service_id, service_handle, developer_parameters FROM fnd_cp_services WHERE service_id = (SELECT manager_type FROM fnd_concurrent_queues WHERE concurrent_queue_name = 'FNDCPOPP'); SERVICE_ID SERVICE_HANDLE DEVELOPER_PARAMETERS ---------------- -------------- -------------------------------------------------------------------------------- 1080 FNDOPP J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx512m
每一個OPP process都須要在OS中啓動單獨的java進程。因此在調優過程當中,建議先增長Threads的數量,Threads的數量受每一個process能夠使用的內存限制,在已有的threads還不夠用時,就須要增長process的數量了。併發
每一個OPP的process都會佔用單獨的內存,因此在增長process個數的時候,OS空閒內存就是要考慮的一個因素。oracle
在OPP服務進程中出現outofmemory錯誤時,就須要增長jvm內存參數了,可以使用下面sql來調整OPP的jvm memory參數。調整以後須要重啓OPP生效。app
sqlUPDATE fnd_cp_services SET developer_parameters = 'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx1024m' WHERE service_id = (SELECT manager_type FROM fnd_concurrent_queues WHERE concurrent_queue_name = 'FNDCPOPP');
EBS中,OPP主要用來處理XML Publisher生成報表的請求,在11i和R12版本中,OPP使用32位java,因此單個OPP process最多隻能使用4G內存(而Oracle建議的值爲2G),因此從處理能力方面來看,單個OPP進程是受到很大限制的。在運行比較大的報表,出現outofmemory錯誤時,單純增長process和threads已經不能很好解決問題,須要從報表的性能上去考慮。在處理比較小的報表請求時,較大的process和threads參數能夠增長系統的吞吐量。jvm