簡體   English   中英

1GB RAM上的memcached tomcat mysql

[英]memcached tomcat mysql on 1GB RAM

我是memcached和緩存的新手。 我有一個Java Web應用程序在具有1GB內存的VPS服務器上的Ubuntu + Tomcat + MySQL上運行。

添加具有約256MB的內存緩存層進行緩存是否有意義? 這會給服務器帶來過多的負擔嗎? 哪種方法更適合緩存呈現的html頁面或數據庫對象?

請指教。

如果要緩存頁面,請不要使用memcached,而要使用Varnish 但是,很有可能不是大量使用內存。 緩存頁面會為計算和數據庫工作交換內存,但是每頁確實要花費大量內存,因此,對於產生單個頁面所需的計算和數據庫工作量很大(或者頁面很小)的情況,最好使用緩存!)。 另外,如果您要在頁面上使用按用戶自定義(例如,顯示購物車中的商品數量),請考慮頁面緩存無效,甚至可能。 至少並非沒有進入一些真正毛茸茸的惡作劇(邊緣包括,有人嗎?)。

如果您不打算緩存頁面,並且您的應用程序位於單台計算機上,那么使用memcached或類似內容就毫無意義。 這樣的緩存服務器的要點是使一台計算機上的內存充當另一台計算機的緩存-就像文件服務器共享磁盤的方式一樣,它們實際上是內存服務器。 在單台計算機上,您最好將所有內存分配給Java並在堆上緩存對象。

您是否正在使用對象關系映射器? 如果是這樣,請查看它是否支持二級緩存。 三大實現(Hibernate,OpenJPA和EclipseLink)均支持內存中的緩存。 與您自己進行緩存相比,它們可能會做得更好。

但是,如果您不使用映射器,則別無選擇,只能自己進行緩存。 LinkedHashMap中有用於構建LRU緩存的擴展點,然后當然還有人們最喜歡的SoftReference與HashMap結合使用。 另外,可能還有一些緩存實現可以下載和使用-如果Apache Commons庫中沒有任何東西,我會感到震驚。

memcached不會在您的服務器上添加任何明顯的負載,但這將是您的應用無法使用的內存。 如果您僅打算暫時使用一台應用服務器,那么最好使用JVM中的緩存。

至於緩存是什么 ,答案在上面的中間某處下降。 您不想完全緩存數據庫中的內容,當然也不想緩存最終輸出。 您的應用程序中的數據模型表示形式與數據庫中的不完全相同(例如,一個User對象可能由來自幾個不同表的多個查詢組成)。 緩存最可重用的東西。

memcached站點中有很多信息,這些信息應該可以幫助您了解一般的緩存以及專門針對memcached的緩存。

這樣做可能是有道理的,為什么不嘗試使用較小的大小(例如64 MB),看看情況如何。 當您將更多資源用於內存緩存時,其他所有資源都將減少。 您應該嘗試一下,看看能為您帶來最佳性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM