洲另类无码专区首页_『内射』极品少妇_丁香六月六月婷婷_国内精品视频免费一区观看_九九导航在线观看_亚洲黄色大毛片A天堂_精品国产制服丝袜高跟_久久综合亚洲欧美综合成人_日本二本道dvd视频_黄色一级片免费

Skip to main content
頭部廣告圖片
  主頁(yè) > 自動(dòng)化測(cè)試

自動(dòng)化測(cè)試腳本容器(自動(dòng)化測(cè)試腳本的結(jié)果檢查方法)

2024-10-17 瀏覽:

本篇文章給大家談?wù)勛詣?dòng)化測(cè)試腳本容器,以及自動(dòng)化測(cè)試腳本的結(jié)果檢查方***對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收***本站喔。 今天給各位分享自動(dòng)化測(cè)試腳本容器的知識(shí),其中也會(huì)對(duì)自動(dòng)化測(cè)試腳本的結(jié)果檢查方***進(jìn)行解釋?zhuān)绻芘銮山鉀Q***現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!

  1. 如何設(shè)置Docker容器中J*a應(yīng)用的內(nèi)存限制?

1、如何設(shè)置Docker容器中J*a應(yīng)用的內(nèi)存限制?

如果使用官方的J*a鏡像,或者基于J*a鏡像構(gòu)建的Docker鏡像,都可以通過(guò)傳遞 J*A_OPTS 環(huán)境變量來(lái)輕松地設(shè)置JVM的內(nèi)存參數(shù)。比如,對(duì)于官方Tomcat 鏡像,我們可以執(zhí)行下面命令來(lái)啟動(dòng)一個(gè)最大內(nèi)存為512M的tomcat實(shí)例

docker run --rm -e J*A_OPTS='-Xmx512m' tomcat:8

在日志中,我們可以清楚地發(fā)現(xiàn)設(shè)置已經(jīng)生效 “Command line argument: -Xmx512m”

02-Apr-2016 12:46:26.*0 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.0.32

02-Apr-2016 12:46:26.*4 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Feb 2 2016 19:34:53 UTC

02-Apr-2016 12:46:26.*5 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.0.32.0

02-Apr-2016 12:46:26.*5 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux

02-Apr-2016 12:46:26.*5 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.1.19-boot2docker

02-Apr-2016 12:46:26.*5 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64

02-Apr-2016 12:46:26.*5 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log J*a Home: /usr/lib/jvm/j*a-7-openjdk-amd64/jre

02-Apr-2016 12:46:26.*6 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.7.0_95-b00

02-Apr-2016 12:46:26.*6 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation

02-Apr-2016 12:46:26.*7 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat

02-Apr-2016 12:46:26.*7 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat

02-Apr-2016 12:46:26.*8 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dj*a.util.logging.config.file=/usr/local/tomcat/conf/logging.properties

02-Apr-2016 12:46:26.*8 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dj*a.util.logging.man*er=org.apache.juli.ClassLoaderLogMan*er

02-Apr-2016 12:46:26.*8 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx512m

...

然而在Docker集群上部署運(yùn)行J*a容器應(yīng)用的時(shí)候,僅僅對(duì)JVM的heap參數(shù)設(shè)置是不夠的,我們還需要對(duì)Docker容器的內(nèi)存**進(jìn)行限制:

1. 限制容器使用的內(nèi)存的最大量,防止對(duì)系統(tǒng)或其他應(yīng)用造成傷害

2. 能夠?qū)ocker容器調(diào)度到擁有足夠空余的內(nèi)存的節(jié)點(diǎn),從而保證應(yīng)用的所需運(yùn)行**

關(guān)于容器的**分配約束,Docker提供了相應(yīng)的啟動(dòng)參數(shù)

對(duì)內(nèi)存而言,最基本的就是通過(guò) -m參數(shù)來(lái)約束容器使用內(nèi)存的大小

-m, --memory=""

Memory limit (format: []). Number is a positive integer. Unit can be one of b, k, m, or g. Minimum is 4M.

那么問(wèn)題就來(lái)了,為了正確設(shè)置Docker容器內(nèi)存的大小,難***我們需要同時(shí)傳遞容器的內(nèi)存限制和J*A_OPTS環(huán)境變量嗎? 如下所示:

docker run --rm -m 512m -e J*A_OPTS='-Xmx512m' tomcat:8

這個(gè)方***有兩個(gè)問(wèn)題

1. 需要管理員保證容器內(nèi)存和JVM內(nèi)存設(shè)置匹配,否則可能引發(fā)錯(cuò)誤

2. 當(dāng)對(duì)容器內(nèi)存限制調(diào)整時(shí),環(huán)境變量也需要重新設(shè)定,這就需要重建一個(gè)新的容器

是否有一個(gè)方***,可以讓容器內(nèi)部的JVM自動(dòng)適配容器的內(nèi)存限制?這樣可以***用更加統(tǒng)一的方***來(lái)進(jìn)行**管理,簡(jiǎn)化配置工作。

大家知***Docker是通過(guò)CGroup來(lái)實(shí)現(xiàn)**約束的,自從1.7版本之后,Docker把容器的local cgroups以只讀方式掛載到容器內(nèi)部的文件系統(tǒng)上,這樣我們就可以在容器內(nèi)部,通過(guò)cgroups信息來(lái)獲取系統(tǒng)對(duì)當(dāng)前容器的**限制了。

我創(chuàng)建了一個(gè)示例鏡像 registry.aliyuncs**/denverdino/tomcat:8-autoheap

,其源***碼可以從Github 獲得。它基于Docker官方Tomcat鏡像創(chuàng)建,它的啟動(dòng)腳本會(huì)檢查CGroup中內(nèi)存限置,并計(jì)算JVM最大Heap size來(lái)傳遞給Tomcat。其***碼如下

#!/bin/bash

limit_in_bytes=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)

# If not default limit_in_bytes in cgroup

if [ "$limit_in_bytes" -ne "9223372036854771712" ]

then

limit_in_megabytes=$(expr $limit_in_bytes \/ 1048576)

heap_size=$(expr $limit_in_megabytes - $RESERVED_MEGABYTES)

export J*A_OPTS="-Xmx${heap_size}m $J*A_OPTS"

echo J*A_OPTS=$J*A_OPTS

fi

exec catalina.sh run

說(shuō)明:

為了監(jiān)控,故障排查等場(chǎng)景,我們預(yù)留了部分內(nèi)存(缺省64M),其余容器內(nèi)存我們都分配給JVM的堆。

這里沒(méi)有對(duì)邊界情況做進(jìn)一步處理。在生產(chǎn)系統(tǒng)中需要根據(jù)情況做相應(yīng)的設(shè)定,比如最大的堆大小等等。

現(xiàn)在我們啟動(dòng)一個(gè)tomcat運(yùn)行在512兆的容器中

docker run -d --name test -m 512m registry.aliyuncs**/denverdino/tomcat:8-autoheap

通過(guò)下列命令,從日志中我們可以檢測(cè)到相應(yīng)的JVM參數(shù)已經(jīng)被設(shè)置成 448MB (512-64)

docker logs test

...

02-Apr-2016 14:18:09.870 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx448m

...

我們也可以方便的調(diào)整J*a應(yīng)用的內(nèi)存.

Docker 1.10提供了對(duì)容器**限制的動(dòng)態(tài)修改能力。但是由于JVM無(wú)***感知容器**修改,我們依然需要重啟tomcat來(lái)變更JVM的內(nèi)存設(shè)置,例如,我們可以通過(guò)下面命令把容器內(nèi)存限制調(diào)整到1GB

docker update -m **m test

docker restart test

再次檢查日志,相應(yīng)的JVM Heap Size最大值已被設(shè)置為960MB

docker logs test

...

02-Apr-2016 14:21:07.644 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx960m



到此,以上就是小編對(duì)于自動(dòng)化測(cè)試腳本容器的問(wèn)題就介紹到這了,希望介紹關(guān)于自動(dòng)化測(cè)試腳本容器的1點(diǎn)解答對(duì)大家有用。

相關(guān)文章
熱門(mén)標(biāo)簽
最新發(fā)布
半年熱點(diǎn)