1. 程式人生 > >Tomcat企業級web應用伺服器配置與實戰

Tomcat企業級web應用伺服器配置與實戰

公司業務經過長期發展,有了很大突破,已
經實現盈利,現公司要求加強技術架構應用功
能和安全性以及開始向企業應用、移動APP等
領域延伸,此時原來開發web服務的php語言
已經不適應新的場景,需要上java技術架構,
現要求你根據公司需要,實現基於java平臺的
web應用服務選型、搭建、實現和應用,此時
你如何選擇?

1 實現企業級常見的架構 LNMT

LNMT:Linux Nginx MySQL Tomcat    

Client(http) -->nginx(reverse proxy)(http)àtomcat(http connector)

在nginx中

Location / {

Proxy_pass http://web1:8080;

}

Location ~*\.(jsp|do)$ {

Proxy_pass http://web2:8080

}

2 實現LNMT叢集服務

Nginx 可進行反向代理供使用者訪問

在http與server之間

Upstream tomcat_cluster {

#ip_hash;

Server 172.17.253.216:8080 weight=1;

Server 172.17.254.97:8080 weight=1;

}

3 實現LNMT的會話保持

  1. session sticky

    基於source_ip nginx:ip_hash haproxy :source lvs:sh

    基於cookie: nginx:sticky haproxy:cookie

  2. session cluster :delta session manager

(3)session server:redis(store) 持久儲存,memcache(cache)

4 基於tomcat叢集會話保持

DeltaManager 會話管理器是Tomcat預設的叢集會話管理器,它主要用於叢集中各個節點之間的會話狀態的同步維護。

叢集增量會話管理器的職責是將某個節點的會話改變同步到叢集內其他的成員節點上,它屬於全節點複製模式。所謂全節點複製就是指叢集中某個節點的狀態變化後需要同步到叢集中剩餘的節點,非全節點方式可能只是同步到其中某個或若干個節點。

在叢集中全節點會話複製的一個大致步驟如圖所示,客戶端發起一個請求,假設通過一定的負載均衡裝置分發策閱分到其中一個節點node1,如果還未存在session物件的web容器會建立一個會話物件,接著執行一些邏輯處理,在對客戶端響應之前有個重要的事情就是把session物件同步到叢集服務其他節點上。最後在響應客戶端,當客戶端第二次發起請求時,假如分發到node3節點上,由於同步了node1的session會話,所以在執行邏輯並不會取不到session的值,如果刪除某個會話物件,則要同時通知其他節點把相應會話刪除,如果修改了某個會話的某些屬性也同樣要更新到其他節點的會話中。

5 基於tomcat叢集會話保持配置

1 cluster 配置:

Cluster(叢集,族),如果你要配置Tomcat叢集,則需要使用此節點

ClassName 表示Tomcat叢集時,之間的相互傳遞資訊使用那個類來實現資訊之間的傳遞

Channelsendoption 可以設定為2 4 8 10 每個數字代表一種方法

2 = Channel.SEND_OPTIONS_USE_ACK(確認傳送)

4 = Channel.SEND_OPTIONS_SYNCHRONIZED_ACK(同步傳送)

8 = Channel.SEND_OPTIONS_ASYNCHRONOUS(非同步傳送)

在非同步模式下,可以通過加上確認傳送(Acknowledge)來提高可靠性,此時channelsendoption設為10

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

channelSendOptions="8">

2.Manager介紹

Manger物件用於實現HTTP會話管理的功能,Tomcat中有5種Manger的實現:

(1).StandardManager

Tomcat6的預設會話管理器,用於非叢集環境中對單個處於執行狀態的Tomcat例項會話

進行管理。當Tomcat關閉時,這些會話相關的資料會被寫入磁碟上的一個名叫

SESSION.ser的檔案,並在Tomcat下次啟動時讀取此檔案。

(2).PersistentManager

當一個會話長時間處於空閒狀態時會被寫入到swap會話物件,這對於記憶體資源比較吃緊

的應用環境來說比較有用。

(3).DeltaManager

用於Tomcat叢集的會話管理器,它通過將改變了會話資料同步給叢集中的其它節點實現

會話複製。這種實現會將所有會話的改變同步給叢集中的每一個節點,也是在叢集環境中

用得最多的一種實現方式。

(4).BackupManager

用於Tomcat叢集的會話管理器,與DeltaManager不同的是,某節點會話的改變只會同

步給叢集中的另一個而非所有節點。

3、Manager配置

className-指定實現org.apache.catalina.ha.ClusterManager介面的類,資訊之間的管

expireSessionsOnShutdown-設定為true時,一個節點關閉,將導致叢集下的所有

Session失效

notifyListenersOnReplication-叢集下節點間的Session複製、刪除操作,是否通知

session listeners

<Manager className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

4、Channel介紹和配置

Channel是Tomcat節點之間進行通訊的工具。Channel包括4個元件:

Membership 叢集的可用節點列表

Receiver 接收器,負責接收訊息

Sender 傳送器,負責傳送訊息

Interceptor Cluster的攔截器

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

Membership:維護叢集的可用節點列表,它可以檢查到新增的節點,也可以檢查到沒有心跳的節點

className-指定Membership使用的類

address-組播地址

port-組播埠

frequency-傳送心跳(向組播地址傳送UDP資料包)的時間間隔(單位:ms)。預設值為500

dropTime-Membership在dropTime(單位:ms)內未收到某一節點的心跳,則將該節點從可用節點

列表刪除。預設值為3000

注: 組播(Multicast):一個傳送者和多個接收者之間實現一對多的網路連線。

一個傳送者同時給多個接收者傳輸相同的資料,只需複製一份相同的資料包。

它提高了資料傳送效率,減少了骨幹網路出現擁塞的可能性

相同組播地址、埠的Tomcat節點,可以組成叢集下的子叢集

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

Membership:維護叢集的可用節點列表,它可以檢查到新增的節點,也可以檢查到沒有心跳的節點

className-指定Membership使用的類

address-組播地址

port-組播埠

frequency-傳送心跳(向組播地址傳送UDP資料包)的時間間隔(單位:ms)。預設值為500

dropTime-Membership在dropTime(單位:ms)內未收到某一節點的心跳,則將該節點從可用節點

列表刪除。預設值為3000

注: 組播(Multicast):一個傳送者和多個接收者之間實現一對多的網路連線。

一個傳送者同時給多個接收者傳輸相同的資料,只需複製一份相同的資料包。

它提高了資料傳送效率,減少了骨幹網路出現擁塞的可能性

相同組播地址、埠的Tomcat節點,可以組成叢集下的子叢集

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

Sender : 傳送器,負責傳送訊息

Sender內嵌了Transport元件,Transport真正負責傳送訊息

-->

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<!--

Transport:定義傳輸方式

Transport分為兩種:bio.PooledMultiSender(阻塞式)、nio.PooledParallelSender(非阻塞式)

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

Interceptor : Cluster的攔截器

TcpFailureDetector-網路、系統比較繁忙時,Membership可能無法及時更新可用節點列表,

此時TcpFailureDetector可以攔截到某個節點關閉的資訊,

並嘗試通過TCP連線到此節點,以確保此節點真正關閉,從而更新叢集可以用節點列表

<Interceptor

className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

MessageDispatch15Interceptor-檢視Cluster元件傳送訊息的方式是否設定為

Channel.SEND_OPTIONS_ASYNCHRONOUS(Cluster標籤下的channelSendOptions為8時)。 設

置為Channel.SEND_OPTIONS_ASYNCHRONOUS時,

MessageDispatch15Interceptor先將等待發送的訊息進行排隊,然後將排好隊的訊息轉給Sender

<Interceptor

className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

ClusterListener : 監聽器,監聽Cluster元件接收的訊息

使用DeltaManager時,Cluster接收的資訊通過ClusterSessionListener傳遞給DeltaManager

-->

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

配置如下:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="/"/>

<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

6 基於tomcat叢集會話保持測試頁面

<%@ page language="java" %>

<html>

<head><title>TomcatB</title></head>

<body>

<h1><font color="blue">TomcatB </h1>

<table align="centre" border="1">

<tr>

<td>Session ID</td>

<% session.setAttribute("abc","abc"); %>

<td><%= session.getId() %></td>

</tr>

<tr>

<td>Created on</td>

<td><%= session.getCreationTime() %></td>

</tr>

</table>

</body>

</html>

7 Tomcat結合memcache實現seesion共享

Tomcat Session Server (memcached)

https://github.com/magro/memcached-session-manager

支援的session server型別:

memcached:

redis:

memcached-session-manager-2.1.1.jar

memcached-session-manager-tc7-2.1.1.jar(注意:要根據

tomcat版本下載相應的)

spymemcached-2.11.1.jar

msm-javolution-serializer-2.1.1.jar

javolution-5.4.3.1.jar

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`````

8 Java虛擬機器工作機制和優化

堆:(物件)

引用型別的變數,其記憶體分配在堆上或者常量池(字串常量,基本資料型別常量),需要通過new等方式來建立。

堆記憶體主要作用是存放執行時建立的(new)的物件。

(主要用於存放物件,存取速度慢,可以執行動時態分配記憶體,生存期不需要提前確定)

棧:(基本資料型別變數,物件的引用變數)

基本資料型別的變數(int,short,long,byte,float,double,Boolean,char等)以及物件的引用變數,其記憶體分配在棧上,變量出了作用域就會自動釋放。

棧記憶體的主要作用就是存放基本資料型別的和引用變數,棧的記憶體管理是通過棧的"後進先出"模式來實現的。

(主要用來執行程式,存取速度快,大小和生存期必須確定,缺乏靈活性)

9 Java垃圾回收器(java優化)

Java垃圾回收器是Java虛擬機器(JVM)的三個重要模組(另外兩個是直譯器和多執行緒機制)

之一,為應用程式提供記憶體的自動分配(Memory Allocation)、自動回收(Garbage

Collect)功能,這兩個操作都發生在Java堆上(一段記憶體快)。

某一個時點,一個物件如果有一個以上的引用(Rreference)指向它,那麼該物件就為活

著的(Live),否則死亡(Dead),視為垃圾,可被垃圾回收器回收再利用。

垃圾回收操作需要消耗CPU、執行緒、時間等資源,所以容易理解的是垃圾回收操作不

是實時的發生(物件死亡馬上釋放),當記憶體消耗完或者是達到某一個指標(Threshold,

使用記憶體佔總記憶體的比列,比如0.75)時,觸發垃圾回收操作。

有一個物件死亡的例外,java.lang.Thread型別的物件即使沒有引用,只要執行緒還在運

行,就不會被回收。

依據統計分析可知,Java(包括一些其它高階語言)裡面大多數物件生命週期都是短暫的

,所以把Java記憶體分代管理。分代的目的無非就是為不同代的記憶體塊運用不同的管理

策略(演算法),從而最大化效能。相對於年老代,通常年輕代要小很多,回收的頻率高,

速度快。年老代則回收頻率低,耗時長。記憶體在年輕代裡面分配,年輕代裡面的物件

經過多個回收週期依然存活的會自動晉升到年老代。

垃圾回收的型別

所有的回收器型別都是基於分代技術。Java HotSpot虛擬機器包含三代,年輕代(Young

Generation)、年老代(Old Generation)、永久代(Permanent Generation)。

永久代

儲存類、方法以及它們的描述資訊。可以通過-XX:PermSize=64m和-

XX:MaxPermSize=128m兩個可選項指定初始大小和最大值。通常 我們不需要調節該

引數,預設的永久代大小足夠了,不過如果載入的類非常多,不夠用了,調節最大值

即可。

年老代

主要儲存年輕代中經過多個回收週期仍然存活從而升級的物件,當然對於一些大的內

存分配,可能也直接分配到永久代(一個極端的例子是年輕代根本就存不下)。

年輕代

絕大多數的記憶體分配回收動作都發生在年輕代。如下圖所示, 年輕代被劃分為三個區域

,原始區(Eden)和兩個小的存活區(Survivor),兩個存活區按功能分為From和To。絕

大多數的物件都在原始區分配,超過一個垃圾回收操作仍然存活的物件放到存活區

10 GC機制--Java虛擬機器垃圾回收機制

Minor GC

從年輕代空間(包括 Eden 和 Survivor 區域)回收記憶體被稱為 Minor GC。這一定義

既清晰又易於理解。但是,當發生Minor GC事件的時候,

當 JVM 無法為一個新的物件分配空間時會觸發 Minor GC,比如當 Eden 區滿了。所

以分配率越高,越頻繁執行 Minor GC。

所有的 Minor GC 都會觸發"全世界的暫停(stop-the-world)"即停止應用程式的

執行緒

Major GC vs Full GC

指發生在老年代的 GC,出現了 Major GC,經常

會伴隨至少一次的 Minor GC 。MajorGC 的速度一般會比 Minor GC 慢 10

倍以上。

當發生Full GC時,也會觸發"全世界的暫停(stop-the-world)"即停止應用程式的

執行緒。並且持續時間長

11 JVM常用的分析工具(排錯工具):

jps: jps主要用來輸出JVM中執行的程序狀態資訊

jinfo:檢視程序的執行環境引數,主要是jvm命令列引數;

jstat:對jvm應用程式的資源和效能進行實時監控;

jstack:檢視所有執行緒的執行狀態;

jmap:檢視jvm佔用實體記憶體的狀態

jps:Java virutal machine Process Status tool,jps [-q] [-mlvV] [<hostid>]

-q:靜默模式;

-v:顯示傳遞給jvm的命令列引數;

-m:輸出傳入main方法的引數;

-l:輸出main類或jar完全限定名稱;

-V:顯示通過flag檔案傳遞給jvm的引數;

[<hostid>]:主機id,預設為localhost;

jinfo:輸出給定的java程序的所有配置資訊

jinfo [option] <pid>

-flags:to print VM flags

jstack:檢視指定的java程序的執行緒棧的相關資訊;

jstack [-l] <pid>

jstack -F [-m] [-l] <pid>

-l:long listings,會顯示額外的鎖資訊,因此,發生死鎖時常用此選項;

-m:混合模式,既輸出java堆疊資訊,也輸出C/C++堆疊資訊;

-F:當使用"jstack -l PID"無響應,可以使用-F強制輸出資訊;

jstat:輸出指定的java程序的統計資訊

jstat -help|-options

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

# jstat -options

-class:class loader 類載入統計

-compiler:JIT 編譯統計

-gc:gc

-gcnew:新生代

-gcold:老年代

-printcompilation JVM編譯方法統計

[<interval> [<count>]]

interval:時間間隔,單位是毫秒;

count:顯示的次數;

S0C、S1C、S0U、S1U:Survivor 0/1區容量(Capacity)和使用量(Used)

EC、EU:Eden區容量和使用量

OC、OU:年老代容量和使用量

PC、PU:永久代容量和使用量

YGC、YGT:年輕代GC次數和GC耗時

FGC、FGCT:Full GC次數和Full GC耗時

GCT:GC總耗時

jmap:Memory Map, 用於檢視堆記憶體的使用狀態;

jmap [option] <pid>

檢視堆空間的詳細資訊:

jmap -heap <pid>

檢視堆記憶體中的物件的數目:

jmap -histo <pid>

live:只統計活動物件;

儲存堆記憶體資料至檔案中,而後使用jvisualvm或jhat進行檢視:

jmap -dump:<dump-options> <pid>

dump-options:

live dump only live objects; if not specified, all objects in the heap are

dumped.

format=b binary format

file=<file> dump heap to <file>

jmap -dump:format=b,file=dumpFileName

jmap:Memory Map, 用於檢視堆記憶體的使用狀態;

jmap [option] <pid>

檢視堆空間的詳細資訊:

jmap -heap <pid>

檢視堆記憶體中的物件的數目:

jmap -histo <pid>

live:只統計活動物件;

儲存堆記憶體資料至檔案中,而後使用jvisualvm或jhat進行檢視:

jmap -dump:<dump-options> <pid>

dump-options:

live dump only live objects; if not specified, all objects in the heap are

dumped.

format=b binary format

file=<file> dump heap to <file>

jmap -dump:format=b,file=dumpFileName

11 tomcat優化方案

1 架構層面

2 Tomcat配置檔案設定(併發)

3 Tomcat對業務場景的記憶體定製

Tomcat優化

一、配置檔案引數優化

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

maxThreads="500" minSpareThreads="20" maxSpareThreads="50"

maxIdleTime="60000"/>

maxThreads :Tomcat 使用執行緒來處理接收的每個請求,這個值表示 Tomcat 可建立的最大的執行緒

數,預設值是 200

minSpareThreads:最小空閒執行緒數,Tomcat 啟動時的初始化的執行緒數,表示即使沒有人使用也

開這麼多空執行緒等待,預設值是 10。

maxSpareThreads:最大備用執行緒數,一旦建立的執行緒超過這個值,Tomcat 就會關閉不再需要

的 socket 執行緒。

maxIdleTime: 最大空閒時間

二、tomcat啟動引數優化

Tomcat 啟動命令列中的優化引數,就是 JVM 的優化 。Tomcat 首先跑在 JVM 之上的,因為它

的啟動其實也只是一個 java 命令列,首先我們需要對這個 JAVA 的啟動命令列進行調優。不管是

YGC 還是 Full GC,GC 過程中都會對導致程式執行中中斷,正確的選擇不同的 GC 策略,調整

JVM、GC 的引數,可以極大的減少由於 GC 工作,而導致的程式執行中斷方面的問題,進而適當

的提高 Java 程式的工作效率。但是調整 GC 是以個極為複雜的過程,由於各個程式具備不同的特

點,如:web 和 GUI 程式就有很大區別(Web可以適當的停頓,但GUI停頓是客戶無法接受的)

,而且由於跑在各個機器上的配置不同(主要 cup 個數,記憶體不同),所以使用的 GC 種類也會

不同。

CATALINA_OPTS:用於當 Java 執行時選項"start"或"run"命令執行。

CATALINA_OPTS=" -server -verbose:gc -XX:+PrintGCTimeStamps -Xms1024m -

Xmx1024m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2 -

XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512"

相關推薦

Tomcat企業級web應用伺服器配置實戰

公司業務經過長期發展,有了很大突破,已 經實現盈利,現公司要求加強技術架構應用功 能和安全性以及開始向企業應用、移動APP等 領域延伸,此時原來開發web服務的php語言 已經不適應新的場景,需要上java技術架構, 現要求你根據公司需要,實現基於java平臺的 web應用

Jenkins+Maven+Gitlab+Tomcat 自動化構建打包、部署 tomcat企業級Web應用伺服器配置會話保持

一、環境需求 本帖針對的是Linux環境,Windows或其他系統也可借鑑。具體只講述Jenkins配置以及整個流程的實現。  1.JDK(或JRE)及Java環境變數配置,我用的是JDK1.8.0_144,網上帖子也很多,不贅述。  2.Jenkins 持續整合和持續交付專

docker 實戰tomcat 部署 web 應用

tput 實戰 容器 鏡像 準備 什麽 web 應用 logs 進程 1. 拉取tomcat docker pull tomcat 2. 啟動 tomcat 服務器 (這裏拉取tomcat鏡像, 鏡像裏面是包括jdk的) docker run -d --name m

ubuntu伺服器搭建個人網站 ---- 阿里雲 輕量應用伺服器配置jdk tomcat mysql

目錄 1.購買雲伺服器 進入阿里雲 www.aliyun.com 可以用支付寶賬號登入,登陸後進入賬號管理->實名認證。還可以進行學生認證。如果進行學生認證的話,可以看到 雲翼計劃。學生優惠購買雲伺服器,9.5元/月。有兩種可供選擇,差別不大

Apache Tomcat 8.5.37 釋出,開源 Web 應用伺服器

   Apache Tomcat 是 Java Servlet、JavaServer Pages、Java 表示式語言和 Java WebSocket 技術的開源實現,是一個免費的開放原始碼的 Web 應用伺服器。 相較於 8.3.35版本,Apache Tomcat

安全預警 | 知名 Web 應用伺服器 Tomcat 資訊洩漏和遠端程式碼執行漏洞

原文地址:https://mp.weixin.qq.com/s/RrD8e3mpl9oRgEaf1JKKdQ?client=tim&ptlang=2052&ADUIN=1835083655&ADSESSION=1505840723&ADTA

《捉蟲記——大容量Web應用效能測試LoadRunner實戰》讀書筆記

最近看了《捉蟲記——大容量Web應用效能測試與LoadRunner實戰》,關於Web端測試和LoadRunner的基本使用做一點筆記,後面可以再補充學習。 強調一點,平臺測試也很重要,就是指不同作業系

最受歡迎的Java web應用伺服器之一——Tomcat監控選型及實踐

監控選型   Tomcat Manager和Psi-probe是不錯的視覺化監控工具,能夠很好地檢視Tomcat狀態資訊(比如單位時間請求數,執行緒狀態等)。在生產環境中,隨著Tomcat例項的不斷增加,維護不同例項上的Manager控制檯會顯得有些繁瑣,同時,為了與企業監控系統、

Web應用伺服器 相關知識梳理(二)Tomcat的系統架構

    Tomcat非常模組化,其總體架構本人歸納為以下:              話說 有這樣的一家人 被稱為Tomcat:       (一)Server           父親被稱為Server,其權利可謂至高無上,控制家中每對孩子;作為每對夫妻的生存環境

Web應用伺服器 相關知識梳理(四)Tomcat的其他元件——Session

         由於HTTP是一種無狀態協議,當用戶的一次訪問請求結束後,後端伺服器就無法知道下一次來訪問的還是不是上次訪問的使用者;提到Session與Cookie,二者的作用都是為了保持訪問使用者與後端伺服器的互動狀態,解決了HTTP是一種無狀態協議的弊端。 Cook

如何在一個MyEclipse配置多個Tomcat系列的應用伺服器,同時執行。

1、我下載了兩個版本的Tomcat8.X的,一個Tomcat8.0.17和Tomcat8.0.20。 2、分別更改對應目錄下的server.xml。 第一處要改的地方: <Server port="8005" shutdown="SHUTDOWN">

nodejs web應用伺服器搭建(三):業務的實現+mongo的基礎使用

前言 本章節主要是關注業務實現的,就是持久層資料的CURD操作,和業務處理。 資料: mongoose 文件 其他章節連結: nodejs web應用伺服器搭建(一):跑起你的伺服器 nodejs web應用伺服器搭建(二):express 框架說明(應用) nodej

nodejs web應用伺服器搭建(一):跑起你的伺服器

前言 本章會分四部分來講,在開始教程之前請準備好相關基礎知識 & 文件 JavaScript基礎;AMD概念;ES5 | ES6語法;(這些沒弄清楚估計往下看也看不下去) nodejs 環境搭建 nodejs sdk文件 express 使用方法

負載均衡軟體和Web應用伺服器詳解

為什麼我們使用軟體負載均衡 海量併發下分散請求,減輕服務壓力,分散式部署,容災,解決單點問題,埠複用節約伺服器資源 硬體負載均衡成本較高,裝置維護較為複雜,穩定性高 nginx haproxy lvs(piranha) php+fastcgi,modjk+tomcat 軟體負責均衡原理 負載

如何在Linux下使用Tomcat部署Web應用(圖文)

cdd img efault 目錄 啟動tomcat linu src tomcat啟動 javaweb 學習Java必不可少的視同Tomcat,但是如果不會使用tomcat部署項目,那也是白扯,在這裏教大家如果在Linux系統下視同Tomcat部署Web應用。

【軟考】——軟體工程基礎知識(Web應用系統分析設計)

WebApp的特性 WebApp屬性???——》網路密集性、併發性、無法預知的負載量、效能、可用性、資料驅動; web應用系統分析的模型型別???——》 內容模型???——》給出由Web應

Docker部署TomcatWeb應用

一、線上下載docker yum install -y epel-release yum install docker-io   # 安裝docker chkconfig docker on     # 加入開機啟動 service docker start     #

使用Dockerfile快速搭建tomcat部署web應用

前言 在本文中,我會寫下我對docker的理解。因為能力所限,可能有些地方描述的不夠欠當。如果你有不同的理解,歡迎交流。 最近這段時間由於需要搭建微服務框架,自己在網上學習dubbo的同時,也閱讀了很多過於docker容器部署,說明的一些文章,感覺受益匪淺,

Nginx Unit 1.7 釋出,動態 Web 應用伺服器

   Nginx Unit 1.7 已釋出,NGINX Unit 是一個動態的網路應用伺服器,它的設計初衷就是可執行多種程式語言的。通過 API 可以輕巧、多面化地動態配置 Unit。當工程師或操作者有需要時,可以輕鬆重構伺服器已適配特殊的應用引數。 更新內容: Chang

Linux伺服器配置管理系列---解決依賴關係破壞---yum回滾

軟體包依賴關係破壞如何解決 軟體包依賴關係破壞解決方案 1.背景     今天準備搭建一個DNS伺服器,奈何在安裝bind系列軟體時候報錯,提示軟體包依賴關係破壞,不能安裝。思考了一下,找到出錯的原因:以前我用的是網易的CentOS源