1. 程式人生 > >Java整合Sentry之配置(二)

Java整合Sentry之配置(二)

10、Event Sampling

Sentry可以配置為使用sample.rate選項對事件進行取樣:

sample.rate=0.75

此選項採用0.0到1.0之間的數字,表示允許通過伺服器的事件百分比(從0%到100%)。預設情況下,所有事件都將傳送到Sentry伺服器。

11、Uncaught Exception Handler

預設情況下,配置UncaughtExceptionHandler將嘗試向Sentry傳送異常。要禁用它,請使用uncaught.handler.enabled選項。請注意,預設情況下異常是非同步傳送的,並且無法保證在JVM退出之前它們將被髮送。此選項最好與下面描述的磁碟緩衝系統一起使用。

uncaught.handler.enabled=false

12、Buffering Events to Disk

Sentry可以配置為只要與Sentry伺服器的通訊失敗並使用buffer.dir選項,就可以將事件寫入磁碟上的指定目錄。如果該目錄不存在,Sentry將嘗試在啟動時建立它,因此可能需要父目錄的寫許可權。 Sentry始終要求對緩衝區目錄本身具有寫入許可權。如果使用AndroidSentryClientFactory,則預設啟用此選項。

buffer.dir=sentry-events

將儲存在磁碟上的最大事件數預設為10,但也可以使用選項buffer.size進行配置:

buffer.size=100

如果提供了緩衝區目錄,後臺執行緒將定期嘗試重新發送在磁碟上找到的事件。預設情況下,它將嘗試每60秒傳送一次事件。您可以使用buffer.flushtime選項(以毫秒為單位)更改此設定:

buffer.flushtime=10000

13、Graceful Shutdown of Buffering (Advanced)

為了正常關閉緩衝區重新整理執行緒,將建立ShutdownHook。預設情況下,緩衝區重新整理執行緒有1秒鐘正常關閉,但可以通過buffer.shutdowntimeout(以毫秒為單位)調整:

buffer.shutdowntimeout=5000

特殊值-1可用於禁用超時並無限期地等待執行程式終止。 在Sentry的生命週期與JVM的生命週期不匹配的環境中,ShutdownHook可能導致記憶體洩漏。 一個例子是在JEE環境中,可以定期部署和取消部署使用Sentry的應用程式。 要避免此行為,可以通過設定buffer.gracefulshutdown選項來禁用正常關閉:

buffer.gracefulshutdown=false

14、Async Connection

為了避免由於生成大量日誌或與Sentry伺服器的連線速度緩慢而導致的效能問題,建立了非同步連線,使用低優先順序執行緒池向Sentry提交事件。 要禁用非同步模式,請在選項中新增async = false:

async=false

15、Graceful Shutdown of Async (Advanced)

為了正常關閉非同步連線,將建立ShutdownHook。預設情況下,非同步連線被給予1秒以正常關閉,但這可以通過async.shutdowntimeout(以毫秒錶示)來調整:

async.shutdowntimeout=5000

特殊值-1可用於禁用超時並無限期地等待執行程式終止。 在Sentry的生命週期與JVM的生命週期不匹配的環境中,ShutdownHook可能導致記憶體洩漏。 一個例子是在JEE環境中,可以定期部署和取消部署使用Sentry的應用程式。 要避免此行為,可以禁用正常關閉。如果日誌應用程式沒有很好地關閉SentryClient例項,這可能會導致某些日誌條目丟失。 執行此操作的選項是async.gracefulshutdown:

async.gracefulshutdown=false

16、Async Queue Size (Advanced)

用於儲存未處理事件的預設佇列限制為50個專案。佇列已滿後新增的其他專案將被刪除,並且永遠不會發送到Sentry伺服器。根據環境(如果記憶體稀疏),能夠控制該佇列的大小以避免記憶體問題非常重要。 可以使用async.queuesize選項設定最大值:

async.queuesize=100

這意味著如果與Sentry伺服器的連線斷開,則只要伺服器備份,就會儲存和處理最近的100個事件。 特殊值-1可用於啟用無限制佇列。請注意網路連線或Sentry伺服器問題可能意味著您的程序將耗盡記憶體。