2011-08-17 50 views
3

我在Apache上運行Django站點,並且在一段時間不活動(大約1小時)後,初始頁面加載速度非常緩慢。我可以通過離開一個小時或彈回服務器來進行復制。初始加載後,頁面在< 1秒內一直加載。Django網站在重啓或不活動期間加載非常緩慢

我假設(猜測)的問題是Python解釋器+ Python模塊在這些不活動期間後再次加載到內存中?

我已經關注了http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html,並且正在運行mod_wsgi處於守護程序模式。

服務器配置:

Timeout 20 
KeepAlive Off 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 
ServerLimit 10 

<IfModule mpm_prefork_module> 
    StartServers   2 
    MinSpareServers  2 
    MaxSpareServers  2 
    MaxClients   4 
    MaxRequestsPerChild 0 
</IfModule> 

... 

WSGIDaemonProcess django display-name=%{GROUP} 
WSGIScriptAlias//path/to/osqa.wsgi process-group=django application-group=%{GLOBAL} 

是什麼明顯的錯誤與上面的配置,或者是有沒有辦法保存在內存Python解釋?

也許這是一個完全不同的問題?

感謝

+0

你可以發佈運行'top'命令的輸出嗎? 你可以發佈error_log.txt文件的輸出嗎? 如果問題在等待大約一個小時後重現,您應該這樣做,並根據您的操作系統運行「ps -C python」,看看python實際上是否仍在運行。 如果沒有更多的症狀/信息,很難診斷問題。 –

+1

您是否正在使用緩存(memcached ..),因爲可能它只是現在您的網站已關閉緩存已清除,您現在觀察的是正常頁面加載不緩存,並且速度您之前正在進行實驗,是因爲緩存優化?!你可以通過(在你的網站恢復正常之後)清除你的緩存(而不是關閉你的網站)並查看差異來了解我的假設是否正確,當然如果你是從一開始就使用緩存框架的話: ) – mouad

+0

凱文。這不會有什麼幫助,因爲在mod_wsgi下,'python'可執行文件不會直接運行來執行任何操作。因爲他們使用了display-name選項,所以使用鏈接Python解釋器的mod_wsgi守護進程實際上被稱爲'(wsgi:django)'。他們可以檢查,但配置是這樣的,它應該在那裏。 –

回答

0

幾個想法:

  • 請確保您有足夠的內存,並且有一些免費的和健康的磁盤高速緩存可用。根據你在做什麼,你應該至少有1GB到4GB的總數。頂部被提及,我建議htop:http://htop.sourceforge.net/
  • 如果您使用IO差的虛擬機,如EC2/EBS,增加磁盤緩存。
  • 將你的db調整爲適合內存的值。
  • 如果緩存檢查超時如上所述。如果沒有人訪問小時緩存將過期。 (?)
  • 配置Linux到較不積極地交換:
    • 回聲20>的/ proc/SYS/VM/swappiness
    • 永久性:在/etc/sysctl.conf中添加vm.swappiness