Java#ミドルキーJboss-Typoraノート

同時

Tomcat:デフォルトで構成されているリクエストの最大数は150です。つまり、150の同時リクエストが同時にサポートされます。もちろん、それを増やすこともできます。アプリケーションの同時実行数が250を超える場合は、アプリケーションサーバーのクラスターを検討する必要があります。

LVS:1つのLVSアンチ50,000

nginx:30,000

mysql:デフォルトのインストール:最大100接続。英語の説明は次のとおりです:500-1000、最大は4000です。多くの場合、エンタープライズアプリケーションで設定されます

1024

オラクル:理論的には65563、ビューメソッド:show parameter license_max_sessions

ランキング説明

PV(訪問):ページビュー。具体的には、Webサイトでのページビューまたはクリック数を指し、ページが更新されると計算されます。Webサイトが1000回更新された場合、トラフィック統計ツールによって表示されるPVは1000です。

UV(独立ビジター):ユニークビジター、ウェブサイトを訪問するコンピュータークライアントはビジターです。00:00〜24:00の同じクライアントは、1回だけカウントされます。

QPS:1秒あたりのクエリ数QPSは、特定のクエリサーバーによって指定された時間に処理されたトラフィックの測定値です。1秒あたりに処理されたクエリの数(データベースの場合、読み取りと同等です)。

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。 
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 。
每天300w PV 的在单台机器上,这台机器需要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。
一般需要达到139QPS,因为是峰值。

TPS:1秒あたりのトランザクション数1秒あたりに処理されたトランザクションの数(データベースの場合は、書き込み、変更に相当します)

IOPS、1秒あたりにディスクによって実行されるI / O操作の数

BSアーキテクチャ、応答時間、クリックレート、スループット、TPS(1秒あたりのトランザクション数)の一般的な分析。
CSアーキテクチャTPSの一般的な分析(1秒あたりのトランザクション数)

pv計算の同時実行例

計算モデル:
1秒あたりに各サーバーによって処理される要求の数=((80%*合計PV)/(24時間で40%))/サーバーの数。
重要なパラメータは80%と40%です。これは、1日のリクエストの80%が40%の時間発生することを意味します。24時間の40%は9.6時間であり、要求の80%は1日9.6時間以内に発生します(これはインターネットアプリケーションに非常に適しており、日中の要求が多く、夜間の要求が少なくなります)。

簡単な計算の結果:
((80%500万)/(24時間60分60秒40%))/ 1 = 115.7リクエスト/秒
((80%100万)/(24時間60分60秒40%) )/ 1 = 23.1リクエスト/秒

予備的な結論:
現在、ストレステストを行っているとき、標準があります。サーバーが1秒あたり115.7の要求を処理できる場合、1日あたり500万PVに耐えることができます。サーバーが1秒あたり23.1の要求を処理できる場合、1日あたり100万PVに耐えることができます。

十分なマージンを残してください:

上記のリクエストは1日の9.6時間に均等に分散されますが、実際の状況はそれほど均等に分散されておらず、山と谷があります。ピーク時間に対処するためには、少なくともx2倍、x3倍はそれほど多くない余裕が必要です。

115.7リクエスト/秒* 2回= 231.4リクエスト/秒

115.7リクエスト/秒* 3回= 347.1リクエスト/秒

23.1リクエスト/秒* 2回= 46.2リクエスト/秒

23.1リクエスト/秒* 3回= 69.3リクエスト/秒

最終結論:

サーバーが1秒あたり1秒あたり231.4〜347.1の要求を処理できる場合、1日あたり平均500万のPVを処理できます。

サーバーが1秒あたり46.2〜69.3の要求を処理できる場合、1日あたり平均100万PVを処理できます。

Tomcatの最適化

1.メモリを最適化する

优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加:

JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"
其中:

• -server:启用jdk的server版本。
• -Xms:虚拟机初始化时的最小堆内存。
• -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
• -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
• -XX:MaxNewSize:新生代占整个堆内存的最大值。
• -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。
1)错误提示:java.lang.OutOfMemoryError:Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。

set JAVA_OPTS=-Xms512m-Xmx512m
2)错误提示:java.lang.OutOfMemoryError: PermGenspace

PermGenspace的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:

setJAVA_OPTS=-XX:PermSize=128M

2.接続を最適化する

连接数优化:
#优化连接数,主要是在conf/server.xml配置文件中进行修改。

1、优化线程数
找到Connector port="8080" protocol="HTTP/1.1",增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"acceptCount="500" maxThreads="400" />
其中:

• maxThreads:tomcat可用于请求处理的最大线程数,默认是200
• minSpareThreads:tomcat初始线程数,即最小空闲线程数
• maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭
• acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100
2、使用线程池
在server.xml中增加executor节点,然后配置connector的executor属性,如下:

<Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
<Connector port="8080" protocol="HTTP/1.1"executor="tomcatThreadPool"/>
其中:

• namePrefix:线程池中线程的命名前缀
• maxThreads:线程池的最大线程数
• minSpareThreads:线程池的最小空闲线程数
• maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭
• threadPriority:线程优先级
注:当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.net.SocketException:Too many open files错误。可使用下面步骤检查:

• ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001
• lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数
• 使用命令:ulimit -a 查看每个用户允许打开的最大文件数


Tomcatの3つの動作モード

三种模式比较:
1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在Linux系统中默认使用这种方式。

2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):

<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>
3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

JBOSS

これは、アプリケーションサーバーのJ2EEベースのオープンソースコードですJBossコードはLGPLライセンスに従い、あらゆる商用アプリケーションで無料で使用できます。JBossは、EJBを管理し、EJB 1.1、EJB 2.0、およびEJB3仕様をサポートするコンテナーおよびサーバーです。ただし、JBossコアサービスには、servlet / JSPをサポートするWEBコンテナは含まれておらず、通常、TomcatまたはJettyと組み合わせて使用​​されます。

tomcatとjbossの違い
  1. Tomcatは、ApacheでサポートされているJava Webアプリケーションサーバー(注:サーブレットコンテナ)です。その優れた安定性、豊富なドキュメント、および幅広いユーザーにより、オープンソースの分野で最も広く支持されています。

  2. Java EEアプリケーションサーバーとして、Jbossはサーブレットコンテナであるだけでなく、EJBコンテナでもあります。エンタープライズレベルの開発者に歓迎され、Tomcatが単なるサーブレットコンテナであるという欠点を補います。

Tomcatサーバーは無料でオープンソースのWebアプリケーション・サーバ、技術がそうするJavaのファンに愛され、いくつかのソフトウェア開発者によって認識されている、安定した性能を進み、それは無料です。動作中に少量のシステムリソースを占有し、優れたスケーラビリティを備え、負荷分散やメールサービスなどの開発アプリケーションシステムの一般的な機能をサポートします。小型軽量のアプリケーションサーバーとして、Tomcatは中小規模のシステムや同時ユーザーが少ないシステムで一般的に使用されており、人気のあるWebアプリケーションサーバーになっています。

JBoss Webは、レビューおよび最適化されたサーブレットコンテナエンジンとして、ダウンロード量が最大、ユーザー数が最大、Javaコミュニティで最も完全な標準サポートを備えた業界最高のオープンソースJavaWebエンジンを採用しています。Pure Tomcatのパフォーマンスは制限されており、アクティブ接続のサポート、静的コンテンツ、大きなファイル、HTTPSなど、多くの場所でパフォーマンスが不足しています。パフォーマンスの問題に加えて、Tomcatのもう1つの大きな欠点は、Javaアプリケーションしか実行できない限定された統合プラットフォームであるということです。企業がTomcatを使用する場合、Tomcatと統合するためにApacheWebサーバーを展開する必要があることがよくあります。この構成はより煩雑であり、パフォーマンスの優位性を保証することはできません。

JBossはTomcatをローカライズし、Tomcatを組み込みの方法でJBossに統合します。JBoss Webは、 APRとTomcatネイティブテクノロジーのハイブリッドモデルを使用してTomcatの多くの欠点を解決します混合テクノロジーモデル、最新のオペレーティングシステムテクノロジーから最高のスレッドとイベントの処理を提供します。その結果、JBoss Webは、ローカルのApache HTTPサーバーまたはIISと一致するか、それを超えるパフォーマンスパラメーターを備えたスケーラビリティを実現しましたたとえば、JBoss Webは、JSPなどのJavaテクノロジをサポートするだけなく、PHPや.NETなどの他のWebテクノロジの統合もサポートするデータベース接続プールサービスを提供できます。

デプロイ
1、下载或上传JDK
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-2133151.html 

2、解压并修改名称
[root@bogon ~]# tar xf jdk-7u211-linux-x64.tar.gz -C /usr/local/
[root@bogon ~]# mv /usr/local/jdk1.7.0_67/ /usr/local/jdk1.7
[root@bogon ~]# vim /etc/profile.d/java.sh
#设置java环境
JAVA_HOME=/usr/local/jdk1.7/
JRE_HOME=/usr/local/jdk1.7/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOMR/lib
export JAVA_HOME JRE_HOME PATH CLASS_PATH

[root@bogon ~]# source /etc/profile.d/java.sh 
[root@bogon ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

3、安装jboss
[root@bogon ~]# wget https://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip
[root@bogon ~]# unzip jboss-as-7.1.1.Final.zip
[root@bogon ~]# mv jboss-as-7.1.1.Final /usr/local/
[root@bogon jboss-as-7.1.1.Final]# echo "export JBOSS_HOME=/usr/local/jboss-as-7.1.1.Final" >> /etc/profile

4、启动服务
使用jboss之前,先设置文件的权限# chmod -R 777 /usr/local/jboss-as-7.1.1.Final
然后进入jboss的bin目录,运行脚本 ./standalone.sh,会 以a single server instance的模式启动Jboss
运行脚本 ./domain.sh,会以allowing control and management of multiple instances的模式启动JBoss

默认端口为8080,但是这里不能访问,因为jboss的默认监听地址为127.0.0.1,我们将它修改一下

[root@bogon ~]# vim /usr/local/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

<interface name="public">
      <inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>

おすすめ

転載: blog.csdn.net/kakaops_qing/article/details/109204725