1. GlassFish概述与环境规划
GlassFish是一个开源的Java EE应用服务器,由Eclipse基金会维护。它提供了完整的Java EE规范实现,包括EJB、JPA、JMS、JAX-RS等。GlassFish以其轻量级和易于配置的特点,广泛应用于企业级Java应用开发。更多学习教程www.fgedu.net.cn
1.1 GlassFish版本说明
GlassFish目前主要版本为GlassFish 7,支持Jakarta EE 10规范。本教程以GlassFish 7为例进行详细讲解。
$ /opt/glassfish7/bin/asadmin version
Version = GlassFish Server Open Source Edition 7.0.9 (build 1)
Command version executed successfully.
# 查看服务器状态
$ /opt/glassfish7/bin/asadmin list-domains
Name: domain1 Status: Running
Command list-domains executed successfully.
# 查看详细版本信息
$ /opt/glassfish7/bin/asadmin version –verbose
GlassFish Server Open Source Edition 7.0.9 (build 1)
Version history:
Initial version: GlassFish Server Open Source Edition 7.0.0
Build number: 1
Build date: 2024-03-15
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
GlassFish管理端口:4848
HTTP端口:8080
HTTPS端口:8181
IIOP端口:3700
JMX端口:8686
安装目录:/opt/glassfish7
数据目录:/data/glassfish
日志目录:/var/log/glassfish
备份目录:/backup/glassfish
Java环境:
JDK版本:OpenJDK 17
JAVA_HOME:/usr/lib/jvm/java-17
JVM堆大小:2GB
1.3 GlassFish核心特性
1. Jakarta EE 10支持:完整的Jakarta EE规范实现
2. 轻量级架构:启动快速,资源占用少
3. 模块化设计:基于OSGi的模块化架构
4. 易于管理:提供Web控制台和命令行工具
5. 高可用性:支持集群和负载均衡
6. 安全性:内置安全框架和SSL/TLS支持
7. 监控功能:提供JMX监控和性能统计
8. 开源免费:Eclipse基金会维护的开源项目
2. 硬件环境要求与检查
在安装GlassFish之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:2核心
内存:2GB
磁盘:10GB
推荐配置(生产环境):
CPU:4核心以上
内存:4GB以上
磁盘:50GB以上
大型应用配置:
CPU:8核心以上
内存:8GB以上
磁盘:100GB以上SSD
2.2 Java环境检查
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)
# 检查JAVA_HOME
$ echo $JAVA_HOME
/usr/lib/jvm/java-17
# 查看Java安装路径
$ which java
/usr/bin/java
# 查看所有已安装的Java版本
$ update-alternatives –list java
/usr/lib/jvm/java-17-openjdk.x86_64/bin/java
/usr/lib/jvm/java-11-openjdk.x86_64/bin/java
# 设置默认Java版本
# update-alternatives –config java
There are 2 programs which provide ‘java’.
Selection Command
———————————————–
*+ 1 /usr/lib/jvm/java-17-openjdk.x86_64/bin/java
2 /usr/lib/jvm/java-11-openjdk.x86_64/bin/java
Enter to keep the current selection[+], or type selection number: 1
2.3 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 15Gi 1.0Gi 13Gi 256Mi 1.0Gi 14Gi
Swap: 7Gi 0B 7Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data
# 检查防火墙状态
# systemctl status firewalld
firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running)
3. GlassFish安装步骤
本节详细介绍GlassFish 7的安装过程。学习交流加群风哥QQ113257174
3.1 安装OpenJDK
# dnf install -y java-17-openjdk java-17-openjdk-devel
# 验证安装
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)
# 设置JAVA_HOME
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# 使配置生效
# source /etc/profile.d/java.sh
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk
3.2 创建用户和目录
# groupadd -g 1003 glassfish
# useradd -u 1003 -g glassfish -d /opt/glassfish7 -s /bin/bash glassfish
# passwd glassfish
# 创建目录
# mkdir -p /opt/glassfish7
# mkdir -p /data/glassfish/{domains,applications,logs}
# mkdir -p /var/log/glassfish
# mkdir -p /backup/glassfish
# 设置目录权限
# chown -R glassfish:glassfish /opt/glassfish7
# chown -R glassfish:glassfish /data/glassfish
# chown -R glassfish:glassfish /var/log/glassfish
# chown -R glassfish:glassfish /backup/glassfish
3.3 下载并安装GlassFish
# cd /usr/local/src
# 下载GlassFish 7
# wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.0.9.zip
# 解压安装
# unzip -q glassfish-7.0.9.zip -d /opt/
# 设置目录权限
# chown -R glassfish:glassfish /opt/glassfish7
# 验证安装
$ ls -la /opt/glassfish7/
总用量 0
drwxr-xr-x. 3 glassfish glassfish 4096 4月 4 10:00 bin
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 glassfish
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 javadb
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 mq
drwxr-xr-x. 2 glassfish glassfish 4096 4月 4 10:00 pkg
# 查看GlassFish目录结构
$ ls -la /opt/glassfish7/glassfish/
总用量 0
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 bin
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 config
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 docs
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 domains
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 lib
drwxr-xr-x 2 glassfish glassfish 4096 4月 4 10:00 modules
3.4 配置GlassFish环境
$ vi ~/.bash_profile
# 添加以下内容
export GLASSFISH_HOME=/opt/glassfish7
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$GLASSFISH_HOME/bin:$JAVA_HOME/bin:$PATH
# 使配置生效
$ source ~/.bash_profile
# 验证环境变量
$ echo $GLASSFISH_HOME
/opt/glassfish7
# 查看asadmin命令
$ which asadmin
/opt/glassfish7/bin/asadmin
# 查看asadmin帮助
$ asadmin –help
3.5 创建域并启动服务器
$ asadmin create-domain –domaindir /data/glassfish/domains –adminport 4848 –instanceport 8080 fgedu-domain
# 输出示例:
Using port 4848 for Admin.
Using port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Using default port 9009 for JAVA_DEBUGGER.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=fgedudb01.fgedu.net.cn,OU=GlassFish,O=Eclipse Foundation,L=Ottawa,ST=Ontario,C=CA]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=fgedudb01.fgedu.net.cn-instance,OU=GlassFish,O=Eclipse Foundation,L=Ottawa,ST=Ontario,C=CA]
Domain fgedu-domain created.
Domain fgedu-domain admin port is 4848.
Domain fgedu-domain allows admin login as user “admin” with no password.
Command create-domain executed successfully.
# 启动域
$ asadmin start-domain fgedu-domain
# 输出示例:
Waiting for fgedu-domain to start …………………………….
Successfully started the domain : fgedu-domain
domain Location: /data/glassfish/domains/fgedu-domain
Log File: /data/glassfish/domains/fgedu-domain/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
# 查看域状态
$ asadmin list-domains
Name: fgedu-domain Status: Running
Command list-domains executed successfully.
3.6 配置管理员密码
$ asadmin change-admin-password
# 输出示例:
Enter admin user name [default: admin]> admin
Enter the admin password>
Enter the new admin password> fgedu123
Enter the new admin password again> fgedu123
Command change-admin-password executed successfully.
# 启用安全管理员
$ asadmin enable-secure-admin
# 输出示例:
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
# 重启域
$ asadmin restart-domain fgedu-domain
# 配置防火墙
# firewall-cmd –permanent –add-port=4848/tcp
success
# firewall-cmd –permanent –add-port=8080/tcp
success
# firewall-cmd –permanent –add-port=8181/tcp
success
# firewall-cmd –reload
success
# 访问管理控制台
# 浏览器访问: https://192.168.1.51:4848
# 使用刚才设置的管理员密码登录
4. GlassFish参数配置
GlassFish参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 JVM参数配置
$ asadmin create-jvm-options –target fgedu-domain “-Xms2g”
$ asadmin create-jvm-options –target fgedu-domain “-Xmx4g”
$ asadmin create-jvm-options –target fgedu-domain “-XX:+UseG1GC”
$ asadmin create-jvm-options –target fgedu-domain “-XX:MaxGCPauseMillis=200”
$ asadmin create-jvm-options –target fgedu-domain “-XX:+HeapDumpOnOutOfMemoryError”
$ asadmin create-jvm-options –target fgedu-domain “-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof”
# 查看JVM选项
$ asadmin list-jvm-options
# 输出示例:
-server
-Xms2g
-Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof
-Djava.awt.headless=true
-Djdk.corba.allowOutputStreamSubclass=true
-Djavax.xml.accessExternalSchema=all
Command list-jvm-options executed successfully.
# 重启域使配置生效
$ asadmin restart-domain fgedu-domain
4.2 线程池配置
$ asadmin create-threadpool –target fgedu-domain –maxthreadpoolsize 50 –minthreadpoolsize 10 –idletimeout 900 fgedu-thread-pool
# 输出示例:
Thread pool fgedu-thread-pool created.
Command create-threadpool executed successfully.
# 查看线程池
$ asadmin list-threadpools
# 输出示例:
admin-thread-pool
http-thread-pool
fgedu-thread-pool
Command list-threadpools executed successfully.
# 配置HTTP服务使用自定义线程池
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.thread-pool=fgedu-thread-pool
# 输出示例:
Command set executed successfully.
4.3 数据源配置
$ asadmin create-jdbc-connection-pool \
–datasourceclassname org.postgresql.ds.PGSimpleDataSource \
–restype javax.sql.DataSource \
–property user=fgedu:password=fgedu123:servername=192.168.1.51:portnumber=5432:databasename=fgedudb \
FgeDuPool
# 输出示例:
JDBC connection pool FgeDuPool created successfully.
Command create-jdbc-connection-pool executed successfully.
# 验证连接池
$ asadmin ping-connection-pool FgeDuPool
# 输出示例:
Command ping-connection-pool executed successfully.
# 创建JNDI资源
$ asadmin create-jdbc-resource –connectionpoolid FgeDuPool –enabled=true jdbc/FgeDuDS
# 输出示例:
JDBC resource jdbc/FgeDuDS created successfully.
Command create-jdbc-resource executed successfully.
# 查看数据源
$ asadmin list-jdbc-resources
# 输出示例:
jdbc/__TimerPool
jdbc/__default
jdbc/FgeDuDS
Command list-jdbc-resources executed successfully.
5. 应用部署
GlassFish支持多种应用部署方式,本节介绍常用的部署方法。from:www.itpux.com
5.1 部署WAR应用
$ asadmin deploy /tmp/fgedu-web.war
# 输出示例:
Application deployed with name fgedu-web.
Command deploy executed successfully.
# 指定上下文路径部署
$ asadmin deploy –contextroot /fgedu /tmp/fgedu-web.war
# 输出示例:
Application deployed with name fgedu-web.
Command deploy executed successfully.
# 方式二:通过管理控制台部署
# 浏览器访问: https://192.168.1.51:4848
# 选择”Applications” -> “Deploy” -> 上传WAR文件
# 方式三:通过autodeploy目录部署
$ cp /tmp/fgedu-web.war /data/glassfish/domains/fgedu-domain/autodeploy/
# 查看部署状态
$ ls -la /data/glassfish/domains/fgedu-domain/autodeploy/
fgedu-web.war
fgedu-web.war_deployed
# 查看已部署的应用
$ asadmin list-applications
# 输出示例:
fgedu-web
Command list-applications executed successfully.
5.2 部署EAR应用
$ asadmin deploy /tmp/fgedu-app.ear
# 输出示例:
Application deployed with name fgedu-app.
Command deploy executed successfully.
# 查看应用详情
$ asadmin show-component-status fgedu-app
# 输出示例:
Status of fgedu-app is enabled.
Command show-component-status executed successfully.
# 启用/禁用应用
$ asadmin disable fgedu-app
$ asadmin enable fgedu-app
5.3 取消部署
$ asadmin undeploy fgedu-web
# 输出示例:
Command undeploy executed successfully.
# 或者删除autodeploy目录中的文件
$ rm /data/glassfish/domains/fgedu-domain/autodeploy/fgedu-web.war
$ rm -f /data/glassfish/domains/fgedu-domain/autodeploy/fgedu-web.war_deployed
# 查看部署历史
$ asadmin list-applications –long
# 输出示例:
NAME TYPE STATUS
fgedu-app ear enabled
fgedu-web war enabled
Command list-applications executed successfully.
6. 集群配置
GlassFish支持集群部署,提供高可用性和负载均衡能力。更多学习教程www.fgedu.net.cn
6.1 创建集群
$ asadmin create-cluster fgedu-cluster
# 输出示例:
Cluster fgedu-cluster created.
Command create-cluster executed successfully.
# 创建集群实例
$ asadmin create-local-instance –cluster fgedu-cluster –node localhost-domain1 –systemproperties HTTP_LISTENER_PORT=28080:HTTP_SSL_LISTENER_PORT=28181 fgedu-instance-1
# 输出示例:
Rendezvoused with DAS on localhost:4848.
Port Assignments for server instance fgedu-instance-1:
JMS_PROVIDER_PORT=27676
HTTP_LISTENER_PORT=28080
ASADMIN_LISTENER_PORT=24848
IIOP_SSL_LISTENER_PORT=23820
IIOP_LISTENER_PORT=23700
JMX_SYSTEM_CONNECTOR_PORT=28686
IIOP_SSL_MUTUALAUTH_PORT=23920
HTTP_SSL_LISTENER_PORT=28181
Command create-local-instance executed successfully.
# 创建第二个实例
$ asadmin create-local-instance –cluster fgedu-cluster –node localhost-domain1 –systemproperties HTTP_LISTENER_PORT=28081:HTTP_SSL_LISTENER_PORT=28182 fgedu-instance-2
# 查看集群状态
$ asadmin list-clusters
# 输出示例:
fgedu-cluster running
Command list-clusters executed successfully.
6.2 启动集群
$ asadmin start-cluster fgedu-cluster
# 输出示例:
The command start-cluster executed successfully for: fgedu-instance-1 fgedu-instance-2
# 查看实例状态
$ asadmin list-instances
# 输出示例:
fgedu-instance-1 running
fgedu-instance-2 running
Command list-instances executed successfully.
# 停止集群
$ asadmin stop-cluster fgedu-cluster
# 删除集群
$ asadmin delete-cluster fgedu-cluster
6.3 配置负载均衡
$ asadmin create-http-lb –devicehost 192.168.1.51 –deviceport 80 fgedu-lb
# 输出示例:
HTTP load balancer fgedu-lb created.
Command create-http-lb executed successfully.
# 将集群添加到负载均衡器
$ asadmin create-http-lb-ref –config fgedu-lb-config fgedu-cluster
# 输出示例:
Command create-http-lb-ref executed successfully.
# 启用负载均衡器
$ asadmin enable-http-lb-server fgedu-cluster
# 输出示例:
Command enable-http-lb-server executed successfully.
# 导出负载均衡器配置
$ asadmin export-http-lb-config –config fgedu-lb-config /tmp/loadbalancer.xml
# 输出示例:
Command export-http-lb-config executed successfully.
7. 安全配置
GlassFish提供了完善的安全框架,本节介绍常用的安全配置方法。学习交流加群风哥微信: itpux-com
7.1 配置SSL/TLS
$ keytool -genkeypair -alias s1as -keyalg RSA -keysize 2048 -keystore /data/glassfish/domains/fgedu-domain/config/keystore.jks -validity 365 -storepass changeit -keypass changeit -dname “CN=fgedudb01.fgedu.net.cn,OU=IT,O=FGedu,L=BJ,ST=BJ,C=CN”
# 配置HTTPS
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-2.enabled=true
# 输出示例:
Command set executed successfully.
# 配置SSL证书
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=s1as
# 输出示例:
Command set executed successfully.
# 重启域
$ asadmin restart-domain fgedu-domain
# 测试HTTPS访问
$ curl -k https://192.168.1.51:8181
7.2 配置安全域
$ asadmin create-auth-realm –classname com.sun.enterprise.security.auth.realm.file.FileRealm –property file=/data/glassfish/domains/fgedu-domain/config/fgedu-keyfile:jaas-context=fileRealm fgedu-realm
# 输出示例:
Auth realm fgedu-realm created.
Command create-auth-realm executed successfully.
# 创建用户
$ asadmin create-file-user –authrealmname fgedu-realm –groups fgedu-users fgedu-user
# 输出示例:
Enter the user password> fgedu123
Enter the user password again> fgedu123
Command create-file-user executed successfully.
# 查看安全域
$ asadmin list-auth-realms
# 输出示例:
admin-realm
file
certificate
fgedu-realm
Command list-auth-realms executed successfully.
7.3 配置访问控制
$ asadmin create-auth-realm –classname com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm –property datasource-jndi=jdbc/FgeDuDS:user-table=users:user-name-column=username:password-column=password:group-table=user_roles:group-name-column=role:jaas-context=jdbcRealm fgedu-jdbc-realm
# 输出示例:
Auth realm fgedu-jdbc-realm created.
Command create-auth-realm executed successfully.
# 配置应用安全
$ asadmin set applications.application.fgedu-web.module.fgedu-web.security-role-mapping.fgedu-users.principal=fgedu-user
# 输出示例:
Command set executed successfully.
8. 监控与日志
GlassFish提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com
8.1 日志配置
$ asadmin set-log-levels javax.enterprise.system.core.security=INFO
# 输出示例:
Command set-log-levels executed successfully.
# 查看日志级别
$ asadmin list-log-levels
# 输出示例:
javax.enterprise.resource.corba INFO
javax.enterprise.resource.jta INFO
javax.enterprise.system.core.security INFO
Command list-log-levels executed successfully.
# 配置日志文件
$ asadmin set-log-attributes com.sun.enterprise.server.logging.GFFileHandler.file=/var/log/glassfish/server.log
# 输出示例:
Command set-log-attributes executed successfully.
# 轮转日志
$ asadmin rotate-log
# 输出示例:
Command rotate-log executed successfully.
8.2 启用监控
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=HIGH
$ asadmin set configs.config.server-config.monitoring-service.module-monitoring-levels.jdbc-connection-pool=HIGH
# 输出示例:
Command set executed successfully.
# 查看监控数据
$ asadmin get -m “server.jvm.memory.heap-used”
# 输出示例:
server.jvm.memory.heap-used=2147483648
Command get executed successfully.
# 查看HTTP服务监控
$ asadmin get -m “server.http-service.server.request.count200”
# 输出示例:
server.http-service.server.request.count200=1000
Command get executed successfully.
8.3 配置JMX监控
$ asadmin set configs.config.server-config.admin-service.jmx-connector.system.enabled=true
# 输出示例:
Command set executed successfully.
# 配置JMX端口
$ asadmin set configs.config.server-config.admin-service.jmx-connector.system.port=8686
# 输出示例:
Command set executed successfully.
# 重启域
$ asadmin restart-domain fgedu-domain
# 使用JConsole连接
$ jconsole service:jmx:rmi:///jndi/rmi://192.168.1.51:8686/jmxrmi
9. 升级与迁移
GlassFish升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com
9.1 版本升级
$ asadmin version
Version = GlassFish Server Open Source Edition 7.0.9 (build 1)
# 完整备份当前GlassFish
$ tar -czf /backup/glassfish/glassfish_backup_$(date +%Y%m%d).tar.gz /opt/glassfish7
# 备份域配置
$ asadmin backup-domain –domaindir /data/glassfish/domains fgedu-domain
# 输出示例:
Backed up domain at /data/glassfish/domains/fgedu-domain/backups/fgedu-domain_2026_04_04_v00001.zip
Command backup-domain executed successfully.
# 停止域
$ asadmin stop-domain fgedu-domain
# 下载新版本
# wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.1.0.zip
# 解压新版本
# unzip -q glassfish-7.1.0.zip -d /opt/
# 迁移域配置
# cp -r /data/glassfish/domains /opt/glassfish7/glassfish/
# 更新软链接
# rm -f /opt/glassfish
# ln -s /opt/glassfish7 /opt/glassfish
# 启动域
$ asadmin start-domain fgedu-domain
# 验证版本
$ asadmin version
Version = GlassFish Server Open Source Edition 7.1.0 (build 1)
9.2 迁移到新服务器
$ asadmin backup-domain –domaindir /data/glassfish/domains fgedu-domain
# 传输备份文件
$ scp /data/glassfish/domains/fgedu-domain/backups/fgedu-domain_*.zip new-server:/tmp/
# 在新服务器安装GlassFish
# 参见3.1-3.4节安装步骤
# 恢复域
$ asadmin restore-domain –domaindir /data/glassfish/domains /tmp/fgedu-domain_2026_04_04_v00001.zip
# 输出示例:
Restored the domain [fgedu-domain] at [/data/glassfish/domains/fgedu-domain]
Command restore-domain executed successfully.
# 启动域
$ asadmin start-domain fgedu-domain
# 验证迁移
$ asadmin list-applications
# 输出示例:
fgedu-web
fgedu-app
Command list-applications executed successfully.
10. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解GlassFish的实际应用。更多学习教程www.fgedu.net.cn
10.1 生产环境完整配置
# 1. JVM参数配置
$ asadmin delete-jvm-options “-Xmx512m”
$ asadmin create-jvm-options “-Xms4g”
$ asadmin create-jvm-options “-Xmx8g”
$ asadmin create-jvm-options “-XX:+UseG1GC”
$ asadmin create-jvm-options “-XX:MaxGCPauseMillis=200”
$ asadmin create-jvm-options “-XX:+HeapDumpOnOutOfMemoryError”
$ asadmin create-jvm-options “-XX:HeapDumpPath=/var/log/glassfish/heapdump.hprof”
$ asadmin create-jvm-options “-XX:MetaspaceSize=256m”
$ asadmin create-jvm-options “-XX:MaxMetaspaceSize=512m”
# 2. 线程池配置
$ asadmin create-threadpool –target fgedu-domain –maxthreadpoolsize 100 –minthreadpoolsize 20 –idletimeout 900 fgedu-production-pool
$ asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.thread-pool=fgedu-production-pool
# 3. 连接池配置
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.steady-pool-size=10
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.max-pool-size=50
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.pool-resize-quantity=5
$ asadmin set resources.jdbc-connection-pool.FgeDuPool.idle-timeout-in-seconds=300
# 4. 创建启动脚本
$ vi /opt/glassfish7/bin/start-glassfish.sh
#!/bin/bash
GLASSFISH_HOME=/opt/glassfish7
export GLASSFISH_HOME
$GLASSFISH_HOME/bin/asadmin start-domain fgedu-domain
# 5. 创建systemd服务
$ vi /etc/systemd/system/glassfish.service
[Unit]
Description=GlassFish Server
After=network.target
[Service]
Type=forking
User=glassfish
Group=glassfish
ExecStart=/opt/glassfish7/bin/asadmin start-domain fgedu-domain
ExecStop=/opt/glassfish7/bin/asadmin stop-domain fgedu-domain
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 启用服务
# systemctl enable glassfish
# systemctl start glassfish
10.2 健康检查配置
$ asadmin set configs.config.server-config.health-check-service.enabled=true
# 输出示例:
Command set executed successfully.
# 配置健康检查项
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.name=configuration-checker
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.enabled=true
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.time=10
$ asadmin set configs.config.server-config.health-check-service.checker.configuration.unit=SECONDS
# 查看健康检查状态
$ asadmin get-health
# 输出示例:
Health Check Status: GOOD
Command get-health executed successfully.
# 探测健康检查端点
$ curl http://192.168.1.51:8080/health
{
“status”: “UP”,
“checks”: [
{
“name”: “memory”,
“status”: “UP”
},
{
“name”: “cpu”,
“status”: “UP”
}
]
}
10.3 性能调优实战
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.max-connections=250
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.timeout-seconds=30
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.request-timeout-seconds=30
# 输出示例:
Command set executed successfully.
# 线程池优化
$ asadmin set configs.config.server-config.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=100
$ asadmin set configs.config.server-config.thread-pools.thread-pool.http-thread-pool.min-thread-pool-size=20
# 输出示例:
Command set executed successfully.
# EJB容器优化
$ asadmin set configs.config.server-config.ejb-container.property.disable-nonportable-jndi-names=true
# 输出示例:
Command set executed successfully.
# 重启域使配置生效
$ asadmin restart-domain fgedu-domain
# 查看性能指标
$ asadmin get -m “server.jvm.memory.heap-used”
$ asadmin get -m “server.jvm.memory.heap-committed”
$ asadmin get -m “server.http-service.server.request.count200”
$ asadmin get -m “server.http-service.server.request.count404”
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
