怎麼解決高併發問題?

General 更新 2024-06-05

JAVA中高訪問量高併發的問題怎麼解決?

你指的高併發量大概有多少?

幾點需要注意:

儘量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與數據庫的交互,提高性能。

用jprofiler等工具找出性能瓶頸,減少額外的開銷。

優化數據庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。

優化數據庫結構,多做索引,提高查詢效率。

統計的功能儘量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。

能使用靜態頁面的地方儘量使用,減少容器的解析(儘量將動態內容生成靜態html來顯示)。

解決以上問題後,使用服務器集群來解決單臺的瓶頸問題。

基本上以上述問題解決後,達到系統最優。

至於樓上有人提到別用JAVA來做,除非是低層的連接數過大(如大量的端口占用需求),這種情況下考慮直接C來寫,其他的可以用JAVA來做。

項目中怎麼控制多線程高併發訪問

synchronized關鍵字主要解決多線程共享數據同步問題。

ThreadLocal使用場合主要解決多線程中數據因併發產生不一致問題。

ThreadLocal和Synchonized都用於解決多線程併發訪問。但是ThreadLocal與synchronized有本質的區別:

synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal為每一個線程都提供了變量的副本,使 得每個線程在某一時間訪問到的並不是同一個對象,這樣就隔離了多個線程對數據的數據共享。而Synchronized卻正好相反,它用於在多個線程間通信 時能夠獲得數據共享。

Synchronized用於線程間的數據共享,而ThreadLocal則用於線程間的數據隔離。當然ThreadLocal並不能替代synchronized,它們處理不同的問題域。Synchronized用於實現同步機制,比ThreadLocal更加複雜。

1、Java中synchronized用法

使用了synchronized關鍵字可以輕鬆地解決多線程共享數據同步問題。

synchronized關鍵字可以作為函數的修飾符,也可作為函數內的語句,也就是平時說的同步方法和同步語句塊。如果再細的分 類,synchronized可作用於instance變量、object reference(對象引用)、static函數和class literals(類名稱字面常量)身上。

synchronized取得的鎖都是對象;每個對象只有一個鎖(lock)與之相關聯;實現同步是要很大的系統開銷作為代價的,甚至可能造成死鎖,所以儘量避免無謂的同步控制。

如何解決應用高併發的問題

決應用高併發的問題方法:

第一,確認服務器硬件是否足夠支持當前的流量。 普通的P4服務器一般最多能支持每天10萬獨立IP,如果訪問量比這個還要大,那麼必須首先配置一臺更高性能的專用服務器才能解決問題,否則怎麼優化都不可能徹底解決性能問題。

第二,優化數據庫訪問。 服務器的負載過大,一個重要的原因是CPU負荷過大,降低服務器CPU的負荷,才能夠有效打破瓶頸。而使用靜態頁面可以使得CPU的負荷最小化。前臺實現完全的靜態化 當然最好,可以完全不用訪問數據庫,不過對於頻繁更新的網站,靜態化往往不能滿足某些功能。 緩存技術 就是另一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用這些文件,而不必再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術 。我自己也寫過一個Z-Blog的計數器插件,也是基於這樣的原理。 如果確實無法避免對數據庫的訪問,那麼可以嘗試優化數據庫的查詢SQL.避免使用Select *from這樣的語句,每次查詢只返回自己需要的結果,避免短時間內的大量SQL查詢。

如何處理高併發帶來的系統性能問題

那必須瞭解linux中的基本使用,比如如何找到某個路徑,如何打開一個文件,如何編輯修改一個文件等等,那就是linux中命令的使用;還有就是必須知道linux服務器中所用的什麼服務器(有weblogic、websphere等等);精通相關服務器的重要屬性配置等等。

java程序員面試時被問到:如何在j2ee項目中處理高併發量訪問? 該怎麼回答? 請仔細看題幹再回答

blog.csdn.net/y_h_t/article/details/6322823

你是一名java程序員,這些應該知道些吧

如何處理java高併發問題

儘量使用緩存包括用戶緩存信息緩存等花點內存做緩存量減少與數據庫交互提高性能

用jprofiler等工具找性能瓶頸減少額外銷

優化數據庫查詢語句減少直接使用hibernate等工具直接語句(僅耗較查詢做優化)

優化數據庫結構做索引提高查詢效率

統計功能儘量做緩存或按每統計或定統計相關報表避免需要進行統計功能

能使用靜態頁面儘量使用減少容器解析(儘量態內容靜態html顯示)解決問題使用服務器集群解決單臺瓶頸問題

怎麼解決大型網站高併發問題 詳細點

網站設置成在本窗口打開能減少IIS併發數,IIS併發是每打開一個頁面就算一個。如果是每頁都新窗口打開,那麼一個用戶瀏覽了多少頁面就產生了多少個IIS數。

如何優化網站高併發訪問

解決高併發訪問,或者說改善,提高一點思路:

1.使用Squid或者Varnish做緩存代理,將經常訪問的圖片等靜態內容緩存起來,提高訪問速度;

2.使用CDN內容分發網絡,減少主服務器的壓力(附CDN相關內容:CDN通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近);

3.使用LVS服務器負載均衡,LVS服務器結合Keepalived做高可用;

4.LVS下面還可跟Nginx做負載均衡,再次分擔壓力,比如淘寶使用的再Nginx基礎上改進的Tnginx。

5.DNS服務器上也可下功夫,比如做高級視圖等等,這樣可以解決不同網段訪問Web服務器的速度問題;

6.最大的瓶頸還是在IO上,比如存儲IO,比如數據庫的IO。存儲一方面需要保證數據不丟失,另一方面需要保證性能,比如做RAID、LVM;存儲還需要考慮使用一套存儲之間的數據同步(GFS、OCFS可以實現),數據的備份等等;數據庫的話可以考慮使用查詢緩存等等,這塊我也正在學習中,展開有很多東西;

7.程序的話也可以優化,比如如果是Java Web程序,並且使用了Hibernate框架,就可以考慮使用查詢緩存了;

8.硬件層:比如提高帶寬,購買高轉數性能好的硬盤等等;

9.緩存機制,緩存機制的種類很多,有頁面緩存(Squid),數據緩存(memcache),查詢緩存,編譯緩存(PHP是腳本語言在編譯時有編譯緩存).

10.數據庫IO是最大問題,所以現在又了NOSQL的解決方案,首先將數據寫入內存中,然後定時寫入硬盤

11.程序優化,增加執行效率,用更好的算法等等。(採用分層,因為每個程序擅長處不一樣,比如JAVA適合做中間層,C++做底層,現在又流行一種node.js做中間層,可以加強執行效率,多線程,以及一些安全問題)

12.隊列系統,有些數據不要一來就馬上處理,做個隊列(先進先出),延遲處理。

大型網站是怎樣解決多用戶高併發訪問

使用分佈式服務器,或者說雲服務器,讓不同地方的訪客訪問不同服務器,提高訪問速度,降低服務器壓力。

如何解決大併發量數據的問題

1.用一個標識,在選擇那張票的時候先用

(Update 表 set 票flag=‘佔用了!’ where 票flag=‘未佔用’ and ........)

這樣是保險的,不可能存在併發問題,這就牽扯到sql鎖機制問題了,你可以測試一下,其實sql中update是先查詢出然後刪除再添加,但由於使用了update,過程中就自動加鎖了,很方便吧

2.加鎖。

Microsoft® SQL Server™ 2000 使用鎖定確保事務完整性和數據庫一致性。鎖定可以防止用戶讀取正在由其他用戶更改的數據,並可以防止多個用戶同時更改相同數據。如果不使用鎖定,則數據庫中的數據可能在邏輯上不正確,並且對數據的查詢可能會產生意想不到的結果。

雖然 SQL Server 自動強制鎖定,但可以通過了解鎖定並在應用程序中自定義鎖定來設計更有效的應用程序。

相關問題答案
怎麼解決高併發問題?
網頁字型不清晰,模糊,發虛,是顯示卡的問題嗎,怎麼解決 ?
電信網通直連的延遲過高的問題怎麼解決 ?
內蒙高原反應怎麼解決?
蘋果手機發熱怎麼解決?
尼姑怎麼解決性問題?
三星手機發熱怎麼解決?
校園網延遲高怎麼解決?
電腦發熱怎麼解決?
政府南海問題怎麼解決?