介紹
我所參與做的產品是乙個比較大型的asp.net系統,在測試部門和客戶那裡,如果長時間執行,系統常常會出現一些outofmemoryexception的異常。引起記憶體溢位的錯誤的原因有很多,主要在伺服器配置方面和**編寫兩個方面可以進行優化和改進,避免此類問題的出現,但完全杜絕是比較困難的。下面是我收集整理的一些解決方法。
伺服器配置方面
1. 安裝.net framework 1.1 service pack 1
2. 使用更多的記憶體
b.即使你有很多記憶體,但
.net(注意不是asp.net工作程序,而是.net整個
使用的記憶體是有一定限制的,可以通過加大配置使用量來減少記憶體溢位的發生。方法如下:
3. **工作執行緒
設定iis
定期清除work process
是避免此異常的乙個較好的方式。但這個功能是iis 6.0
(也就是windows 2003
上帶的iis
)才支援。
配置方法如下:
windows 2000 server
上安裝的是iis 5.0
,本身不支援recycle
,但要想實現這個功能也不難。微軟針對iis提供的iis5recycle
便是這樣乙個程式,它安裝後以服務形式提供**工作程序。
安裝說明見http://support.microsoft.com/?id=322350
是表示安裝好之後的配置資訊! 是不是和iis6中的一模一樣?
**編寫方面的注意問題
1.system.drawing方面的類使用問題
system.drawing用到了很多系統的資源和非託管**,所以使用的時候要特別小心,注意記憶體洩漏(memory leak)例如:bitmap.maketransparent方法的使用問題:
2.new byte問題
處理流的時候常常會用到new乙個大的byte陣列。但在多使用者情況下會消耗大量的記憶體。正確的做法應該是定義乙個比較小的byte陣列做為快取,然後迴圈使用。如在我們的程式中,有些地方使用不當,當(或附件)過大或過多的時候,new byte[length]就有可能消耗過多的記憶體。
3. 避免使用大物件陣列或小物件大陣列
程式設計時同樣要重視效率問題(包括記憶體占用問題)。
4.com
介面呼叫是要注意釋放物件。
rocketmq client 日誌的問題處理方式
目錄 使用rocketmq後,缺省會在 logs rocketmqlogs 目錄下生成大量的mq跟蹤日誌,可以通過以下方式禁用或改變儲存目錄 設定系統屬性 rocketmq.client.loguseslf4j true 啟動引數 新增 drocketmq.client.loguseslf4j tr...
實戰修改密碼處的一處邏輯問題 原創
遇到乙個系統,有點代表性,就把這個漏洞細節發出來了。具體漏洞點在修改密碼的地方。首先用xiaoliu13的號進行登入 然後點選修改密碼 然後填寫好原密碼和確認密碼後點選修改,然後抓包 然後可以看到,這裡有我的賬號,把我的賬號改成其他賬號。這裡原密碼我們改成123456,進行爆破,若對方密碼為1234...
elasticsearch 頻繁GC問題處理
收到es的告警,在1小時內意外分配了碎片,從而導致集群狀態 green yellow red yellow green 頻繁切換?在此期間,es不可訪問,並且呼叫api開始返回非200的狀態碼。環境 3個主節點和3個工作節點。這種鋸尺模式的原因是,elasticsearch在執行某些操作搜尋查詢,寫...