This topic explains how to run VMware Tanzu GemFire server processes. A Tanzu GemFire server is a process that runs as a long-lived, configurable member of a client/server system.
The Tanzu GemFire server is used primarily for hosting long-lived data regions and for running standard Tanzu GemFire processes such as the server in a client/server configuration. You can start and stop servers using the following methods:
gfsh
command-line tool.org.apache.geode.distributed.ServerLauncher
API. The ServerLauncher
API can only be used for Tanzu GemFire Servers that were started with gfsh
or with the ServerLauncher
class itself.The gfsh
utility uses a working directory for its configuration files and log files. These are the defaults and configuration options:
gfsh
, gfsh
will automatically load the required JAR file lib/geode-dependencies.jar
into the CLASSPATH of the JVM process. If you start a standalone server using the ServerLauncher API, you must specify this JAR file inside your command to launch the process. For more information on CLASSPATH settings in Tanzu GemFire, see Setting Up the CLASSPATH.gemfire.properties
and shared cluster configuration files. It is not programmable except through application plug-ins. Typically, you provide the gemfire.properties
file and the gfsecurity.properties
file. You can also specify a cache.xml
file in the cache server’s working directory.By default, a new server started with gfsh
receives its initial cache configuration from the cluster configuration service, assuming the locator is running the cluster configuration service. If you specify a group when starting the server, the server also receives configurations that apply to a group. The shared configuration consists of cache.xml
files, gemfire.properties
files, and deployed jar files. You can deactivate use of the cluster configuration service by specifying --use-cluster-configuration=false
when starting the server using gfsh
. See Overview of the Cluster Configuration Service.
If you are using the Spring Framework, you can specify a Spring ApplicationContext XML file when starting up your server in gfsh
by using the --spring-xml-location
command-line option. This option allows you to bootstrap your Tanzu GemFire server process with your Spring application’s configuration. See Spring documentation for more information on this file.
<server-name>.log
in the cache server’s working directory. If you restart a server with the same server name, the existing log file is automatically renamed, for example, server1-01-01.log
and server1-02-01.log
. You can modify the level of logging details in this file by specifying a level in the --log-level
argument when starting up the server.gfsh
is executed. This subdirectory is considered the current working directory. You can also specify a different working directory when starting the cache server in gfsh
.You can pass JVM parameters to the server’s JVM by using the --J=-Dproperty.name=value
upon server startup. These parameters can be Java properties or Tanzu GemFire properties such as gemfire.jmx-manager
. For example:
gfsh>start server --name=server1 --J=-Dgemfire.jmx-manager=true \
--J=-Dgemfire.jmx-manager-start=true --J=-Dgemfire.http-port=8080
We recommend that you do not use the -XX:+UseCompressedStrings
and -XX:+UseStringCache
JVM configuration properties when starting up servers. These JVM options can cause issues with data corruption and compatibility.
See the gfsh start server
command reference page for syntax information.
These example gfsh start server
start commands specify a cache.xml
file for cache configuration, and use different incoming client connection ports:
gfsh>start server --name=server1 \
--cache-xml-file=../ServerConfigs/cache.xml --server-port=40404
gfsh>start server --name=server2 \
--cache-xml-file=../ServerConfigs/cache.xml --server-port=40405
The location of the cache.xml
file and the setting for the client connection port could instead be defined within a gemfire.properties
file. Then, start the server specifying the gemfire.properties
file, as in the example command:
gfsh>start server --name=server1 \
--properties-file=/home/username/cluster/gemfire.properties
To start a server with an embedded JMX Manager:
gfsh>start server --name=server2 \
--J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true
When both --max-heap
and --initial-heap
are specified during server startup, additional GC parameters are specified on your behalf. If you do not want additional default GC properties set, then use the -Xms
& -Xmx
JVM options to set just these parameters. See Controlling Heap Use with the Resource Manager for more information. To start a server, providing JVM configuration settings:
gfsh>start server --name=server3 \
--J=-Xms80m,-Xmx80m --J=-XX:+UseConcMarkSweepGC,-XX:CMSInitiatingOccupancyFraction=65
Use the org.apache.geode.distributed.ServerLauncher
API to start the cache server process inside your code. Use the ServerLauncher.Builder
class to construct an instance of the ServerLauncher
, and then use the start()
method to start the server service. The other methods in the ServerLauncher
class provide status information about the server and allow you to stop the server.
import org.apache.geode.distributed.ServerLauncher;
public class MyEmbeddedServer {
public static void main(String[] args){
ServerLauncher serverLauncher = new ServerLauncher.Builder()
.setMemberName("server1")
.setServerPort(40405)
.set("jmx-manager", "true")
.set("jmx-manager-start", "true")
.build();
serverLauncher.start();
System.out.println("Cache server successfully started");
}
}
Once connected to the cluster in gfsh
, check the status of a running cache server by providing the server name:
gfsh>status server --name=server1
If you are not connected to a cluster, you can check the status of a local cache server by providing the process ID or the server’s current working directory. For example:
gfsh>status server --pid=2484
or
% gfsh status server --dir=server1
If successful, the output provides information as in this sample:
% gfsh status server --dir=server4
Server in /home/username/server4 on 192.0.2.0[40404] as server4 is currently online.
Process ID: 49008
Uptime: 2 minutes 4 seconds
Tanzu GemFire Version: 9.15
Java Version: 1..0_272
Log File: /home/username/server4/server4.log
JVM Arguments:
...
When connected to the cluster in gfsh
, stop a running cache server by providing the server name:
gfsh>stop server --name=server1
If not connected, you can stop a local cache server by specify the server’s current working directory or the process ID. For example:
gfsh>stop server --pid=2484
or
gfsh>stop server --dir=server1
You can also use the gfsh shutdown
command to shut down all cache servers in an orderly fashion. Doing a shutdown
is the correct approach for systems with persistent regions. See Starting Up and Shutting Down Your System for more details.