BlueXIII's Blog

热爱技术,持续学习

0%

参考文档

安装

1
2
3
4
5
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

curl -L https://arthas.aliyun.com/install.sh | sh
./as.sh

常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
watch com.sdecloud.efpx.quality.biz.controller.QualityRuleTemplateController list '{params[0],returnObj.toString()}'

stack com.sdecloud.efpx.quality.biz.controller.QualityRuleTemplateController list

tt -t com.sdecloud.efpx.quality.biz.controller.QualityRuleTemplateController list

watch com.sdecloud.efpx.quality.biz.component.CleanComponent cleanCheckLog

ognl '@com.sdecloud.efpx.quality.biz.component.CleanComponent@cleanCheckLog'
ognl '@com.sdecloud.efpx.quality.biz.service.QualityCheckLogServiceDb@info(1,1,"test")'
ognl '@com.sdecloud.efpx.quality.biz.service.QualityTaskBatchService@clean("2021-8-1")' -X 1

sc -d com.sdecloud.efpx.quality.biz.service.QualityTaskBatchService
sm -d com.sdecloud.efpx.quality.biz.service.QualityTaskBatchService$$EnhancerBySpringCGLIB$$52b99956
watch com.sdecloud.efpx.quality.biz.service.QualityTaskBatchService clean

参考文档

下载地址

https://skywalking.apache.org/downloads/

OAP地址

OAP:
http://10.193.2.8:12800
10.193.2.8:11800

UI:
http://10.193.2.8:18080

Agent配置

1
2
3
4
5
export SW_AGENT_NAME=dubhe-quality
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=10.193.2.8:11800
export SW_AGENT_SPAN_LIMIT=2000
export JAVA_AGENT=-javaagent:/path/to/skywalking-agent.jar
java -jar $JAVA_AGENT -jar dubhe-quality-biz.jar

DevOps配置

Dockerfile

1
2
3
4
5
6
7
8
9
10
FROM openjdk:17-oracle
MAINTAINER la
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /dubhe-quality-biz
WORKDIR /dubhe-quality-biz
EXPOSE 8604
ADD ./dubhe-quality/dubhe-quality-biz/target/dubhe-quality-biz.jar ./
ADD ./deploy/skyskywalking-agent.tar.gz /
CMD java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar -javaagent:/skywalking-agent/skywalking-agent.jar -jar dubhe-quality-biz.jar

K8S Yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- env:
- name: NACOS_HOST
value: 10.133.0.63
- name: NACOS_PORT
value: 30501
- name: SERVICE_HOST
value: 10.133.0.63
- name: SERVICE_PORT
value: 30510
- name: NACOS_USERNAME
value: nacos
- name: NACOS_PASSWORD
value: nacos
- name: SW_AGENT_NAME
value: dubhe-quality
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: 10.193.2.8:11800
- name: SW_AGENT_SPAN_LIMIT
value: 2000

本机打包测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker build -f dubhe-quality/dubhe-quality-biz/Dockerfile -t dubhe-quality .

docker run --rm \
--name dubhe-quality \
-p 8604:8604 \
-e NACOS_HOST=10.133.0.63 \
-e NACOS_PORT=30501 \
-e SERVICE_HOST=10.255.2.133 \
-e SERVICE_PORT=8604 \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e SW_AGENT_NAME=dubhe-quality \
-e SW_AGENT_COLLECTOR_BACKEND_SERVICES=10.193.2.8:11800 \
-e SW_AGENT_SPAN_LIMIT=2000 \
dubhe-quality:latest

Pom依赖添加

需要添加缺失的依赖以避免找不到类的问题

在根pom.xml中,添加Java17缺失依赖

1
2
3
4
5
6
7
8
9
10
11
<!--Java17缺失依赖-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>

Dockerfile修改

需要修改java启动参数以允许深度反射

  1. 基础镜像改为openjdk:17-oracle
  2. 启动命令中加入--add-opens参数

原始:

1
2
3
4
5
6
7
8
9
FROM java:8
MAINTAINER la
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /dubhe-quality-biz
WORKDIR /dubhe-quality-biz
EXPOSE 8604
ADD ./dubhe-quality/dubhe-quality-biz/target/dubhe-quality-biz.jar ./
CMD java -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar dubhe-quality-biz.jar

修改后:

1
2
3
4
5
6
7
8
9
FROM openjdk:17-oracle
MAINTAINER la
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /dubhe-quality-biz
WORKDIR /dubhe-quality-biz
EXPOSE 8604
ADD ./dubhe-quality/dubhe-quality-biz/target/dubhe-quality-biz.jar ./
CMD java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar dubhe-quality-biz.jar

Alias修改

1
2
vi .zshrc
alias java="java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED"

选型

  • spotlight 关注
  • apifox 关注
  • yapi
  • swagger-faker
  • easydoc
  • apizza
  • torna

torna安装

1
2
3
4
5
6
7
8
9
10
11
12
docker pull tanghc2020/torna:1.15.7

docker run --name torna --restart=always \
-p 7700:7700 \
-e JAVA_OPTS="-Xms256m -Xmx256m" \
-e MYSQL_HOST="10.193.2.12:3306" \
-e MYSQL_SCHEMA="torna" \
-e MYSQL_USERNAME="root" \
-e MYSQL_PASSWORD="yourpass" \
-d tanghc2020/torna:1.15.7

http://10.193.2.12:7700

Containerd

参考文档

配置文件

/var/lib/rancher/k3s/agent/etc/containerd/config.toml

Podman

参考文档

https://zhuanlan.zhihu.com/p/110394125

镜像

官网

参考文档

测试机

  • 10.193.34.2
  • 10.193.34.3

Yum源

1
2
3
4
5
cd /etc/yum.repos.d/ && mkdir backup && mv *repo backup/ 
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
sed -i -e "s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g " /etc/yum.repos.d/CentOS-*
sed -i -e "s|releasever|releasever-stream|g" /etc/yum.repos.d/CentOS-*
yum clean all && yum makecache

CentOS7内核升级

https://zhuanlan.zhihu.com/p/368879345

K3S离线包

https://github.com/rancher/k3s/releases

离线安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 下载
wget https://bluexiii-files.oss-cn-beijing.aliyuncs.com/install.sh
wget https://bluexiii-files.oss-cn-beijing.aliyuncs.com/k3s
wget https://bluexiii-files.oss-cn-beijing.aliyuncs.com/k3s-airgap-images-amd64.tar.gz
chmod +x install.sh
chmod +x k3s
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/
cp k3s /usr/local/bin/k3s

# Master
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
cat /var/lib/rancher/k3s/server/node-token

# Agent
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://10.193.34.2:6443 K3S_TOKEN=K108a518c04bb5139e71da5822461293fe4016b0ae5a46db42f8b105d1a4a3369e4::server:b1af43bb495176c4050d4c2f4907a75f ./install.sh

Registry

1
2
3
4
5
6
7
8
9
docker pull registry:latest

docker run -itd \
--name registry \
--hostname registry \
--volume /root/registry:/var/lib/registry/docker/registry \
--publish 5000:5000 \
--restart unless-stopped \
registry:latest

http://10.193.34.2:5000

Helm

文档

https://github.com/helm/helm/releases
https://helm.sh/zh/docs/intro/install/

安装

1
2
wget https://bluexiii-files.oss-cn-beijing.aliyuncs.com/helm-v3.9.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

Docker离线

https://blog.51cto.com/90xpy/2722642
https://github.com/docker/compose/releases

Docker在线

https://www.cnblogs.com/yyee/p/12905165.html
https://github.com/duiying/ops/tree/master/docker-ce-yum-install

Harbor离线

https://segmentfault.com/a/1190000040905311
https://learnku.com/articles/29884
https://github.com/duiying/OPS/tree/master/harbor-install

http://10.193.34.4:9010
admin/Harbor12345

1
2
3
4
5
6
7
8
vi /etc/docker/daemon.json
{
"insecure-registries" : ["10.193.34.4:9010"]
}

docker login 10.193.34.4:9010
docker tag nginx:latest 10.193.34.4:9010/dubhe/nginx:latest
docker push 10.193.34.4:9010/dubhe/nginx:latest

参考文档

脚本

1
2
3
4
5
# 1、通过本地端口建立ssh隧道转发请求
ssh -CNg -D8000 -p9922 root@10.80.8.238

# 2、ssh隧道代理本地端口
ssh -N -R 20001:127.0.0.1:20001 root@10.193.2.5

参考文档

安装

1
2
3
4
5
6
7
# 安装
# curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sudo yum -y install sysbench

# LUA脚本目录
/usr/share/sysbench

MySQL压测

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#  准备数据
sysbench \
--mysql-host=10.193.10.252 \
--mysql-port=3306 \
--mysql-db=sysbench \
--mysql-user=dev \
--mysql-password=yourpass \
/usr/share/sysbench/oltp_common.lua \
--tables=10 \
--table_size=100000 \
prepare

# 清理数据
sysbench \
--mysql-host=10.193.10.252 \
--mysql-port=3306 \
--mysql-db=sysbench \
--mysql-user=dev \
--mysql-password=yourpass \
/usr/share/sysbench/oltp_common.lua \
--tables=10 \
cleanup

# 测试
sysbench \
--mysql-host=10.193.10.252 \
--mysql-port=3306 \
--mysql-db=sysbench \
--mysql-user=dev \
--mysql-password=yourpass \
--threads=20 \
--time=60 \
--report-interval=5 \
/usr/share/sysbench/oltp_read_write.lua \
--tables=10 \
--table_size=100000 \
run

测试结果 10.193.10.252 写实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[ 5s ] thds: 4 tps: 426.24 qps: 8533.27 (r/w/o: 5975.01/1704.97/853.29) lat (ms,95%): 10.09 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 458.81 qps: 9181.27 (r/w/o: 6426.59/1837.05/917.63) lat (ms,95%): 9.56 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 510.40 qps: 10205.85 (r/w/o: 7144.44/2040.61/1020.81) lat (ms,95%): 8.90 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 480.19 qps: 9604.44 (r/w/o: 6722.49/1921.57/960.38) lat (ms,95%): 8.90 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 131362
write: 37532
other: 18766
total: 187660
transactions: 9383 (468.95 per sec.)
queries: 187660 (9378.96 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)

General statistics:
total time: 20.0069s
total number of events: 9383

Latency (ms):
min: 5.30
avg: 8.53
max: 120.79
95th percentile: 9.22
sum: 79990.85

Threads fairness:
events (avg/stddev): 2345.7500/10.08
execution time (avg/stddev): 19.9977/0.00

测试结果 10.193.10.250 Proxy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[ 5s ] thds: 4 tps: 270.87 qps: 5427.64 (r/w/o: 3801.41/1083.69/542.54) lat (ms,95%): 15.83 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 257.42 qps: 5146.09 (r/w/o: 3600.95/1030.30/514.85) lat (ms,95%): 16.12 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 261.62 qps: 5233.32 (r/w/o: 3664.43/1045.66/523.23) lat (ms,95%): 16.41 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 271.79 qps: 5435.24 (r/w/o: 3804.49/1087.17/543.58) lat (ms,95%): 15.55 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 74382
write: 21252
other: 10626
total: 106260
transactions: 5313 (265.48 per sec.)
queries: 106260 (5309.53 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)

General statistics:
total time: 20.0115s
total number of events: 5313

Latency (ms):
min: 9.53
avg: 15.06
max: 120.29
95th percentile: 16.12
sum: 80021.11

Threads fairness:
events (avg/stddev): 1328.2500/4.15
execution time (avg/stddev): 20.0053/0.00

TiDB

mysql://10.193.0.8:4000 root/yourpass

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 准备
sysbench \
--mysql-host=10.193.0.8 \
--mysql-port=4000 \
--mysql-db=sysbench \
--mysql-user=root \
--mysql-password=yourpass \
/usr/share/sysbench/oltp_common.lua \
--tables=10 \
--table_size=100000 \
prepare

# 测试
sysbench \
--mysql-host=10.193.0.8 \
--mysql-port=4000 \
--mysql-db=sysbench \
--mysql-user=root \
--mysql-password=yourpass \
--threads=20 \
--time=60 \
--report-interval=5 \
/usr/share/sysbench/oltp_read_write.lua \
--tables=10 \
--table_size=100000 \
run

测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[ 5s ] thds: 20 tps: 469.21 qps: 9454.95 (r/w/o: 6623.50/1889.03/942.42) lat (ms,95%): 130.13 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 20 tps: 494.81 qps: 9882.80 (r/w/o: 6920.34/1972.84/989.62) lat (ms,95%): 106.75 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 20 tps: 441.62 qps: 8837.18 (r/w/o: 6185.26/1768.68/883.24) lat (ms,95%): 132.49 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 20 tps: 503.80 qps: 10065.62 (r/w/o: 7044.81/2013.60/1007.20) lat (ms,95%): 94.10 err/s: 0.00 reconn/s: 0.00
[ 25s ] thds: 20 tps: 439.01 qps: 8783.70 (r/w/o: 6149.27/1756.02/878.41) lat (ms,95%): 130.13 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 20 tps: 383.00 qps: 7660.47 (r/w/o: 5362.45/1532.01/766.01) lat (ms,95%): 137.35 err/s: 0.00 reconn/s: 0.00
[ 35s ] thds: 20 tps: 439.79 qps: 8793.80 (r/w/o: 6156.66/1757.56/879.58) lat (ms,95%): 130.13 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 20 tps: 467.00 qps: 9337.01 (r/w/o: 6534.81/1868.60/933.60) lat (ms,95%): 118.92 err/s: 0.00 reconn/s: 0.00
[ 45s ] thds: 20 tps: 418.60 qps: 8381.86 (r/w/o: 5868.84/1675.41/837.61) lat (ms,95%): 134.90 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 20 tps: 459.79 qps: 9196.03 (r/w/o: 6435.68/1840.77/919.58) lat (ms,95%): 101.13 err/s: 0.00 reconn/s: 0.00
[ 55s ] thds: 20 tps: 463.01 qps: 9255.66 (r/w/o: 6479.38/1850.25/926.03) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 20 tps: 415.40 qps: 8288.56 (r/w/o: 5799.77/1658.79/830.00) lat (ms,95%): 137.35 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 377944
write: 107984
other: 53992
total: 539920
transactions: 26996 (449.31 per sec.)
queries: 539920 (8986.21 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)

General statistics:
total time: 60.0817s
total number of events: 26996

Latency (ms):
min: 20.72
avg: 44.47
max: 368.03
95th percentile: 130.13
sum: 1200584.83

Threads fairness:
events (avg/stddev): 1349.8000/15.89
execution time (avg/stddev): 60.0292/0.02

CPU

1
sysbench cpu --threads=40 --events=10000 --cpu-max-prime=20000 run

磁盘

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sysbench fileio help

# 准备
sysbench fileio --file-num=5 --file-total-size=1G prepare

# 测试
sysbench fileio \
--events=5000 \
--threads=16 \
--file-num=5 \
--file-total-size=1G \
--file-test-mode=rndrw \
--file-fsync-freq=0 \
--file-block-size=16384 \
run

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
File operations:
reads/s: 33380.09
writes/s: 22271.94
fsyncs/s: 890.43

Throughput:
read, MiB/s: 521.56
written, MiB/s: 348.00

General statistics:
total time: 0.0881s
total number of events: 5000

Latency (ms):
min: 0.00
avg: 0.02
max: 4.30
95th percentile: 0.04
sum: 116.73

Threads fairness:
events (avg/stddev): 312.5000/132.74
execution time (avg/stddev): 0.0073/0.00

Docker

https://hub.docker.com/r/severalnines/sysbench/

脚本

1
2
3
4
5
6
7
8
# 拉镜像
docker pull severalnines/sysbench

# 磁盘准备
docker run -it \
--name=sysbench \
severalnines/sysbench \
bash

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
File operations:
reads/s: 6408.42
writes/s: 4272.28
fsyncs/s: 170.89

Throughput:
read, MiB/s: 100.13
written, MiB/s: 66.75

General statistics:
total time: 0.4660s
total number of events: 5000

Latency (ms):
min: 0.00
avg: 0.02
max: 3.48
95th percentile: 0.04
sum: 95.95

Threads fairness:
events (avg/stddev): 312.5000/219.91
execution time (avg/stddev): 0.0060/0.00

server.xml测试

Connector->maxThreads,在64核下设置成200最优,设300或更高反而增加CPU切换时间大幅降低TPS。查资料默认值就是200,此参数不用设置。
Connector->minSpareThreads,设成200或直接用默认值25,没有区别
Connector->maxConnections,

server.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>

<Service name="Catalina">

<!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1024" minSpareThreads="128"/> -->

<!-- <Connector executor="tomcatThreadPool"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
port="8080"
maxConnections="40000"
acceptCount="40000"
enableLookups="false"
disableUploadTimeout="true"
useSendfile="true"
connectionTimeout="60000"
redirectPort="8443"
URIEncoding="UTF-8"
compression="on"
compressionMinSize="1024"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
/> -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxConnections="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>
</Engine>
</Service>
</Server>