Server Architecture Overview
PhixFlow is built on a single Java-based architecture i.e. it is not made up of several products with different architectures bolted together. There are two main elements in the server architecture:
- PhixFlow Application Server - The PhixFlow application server is a Java-based application which runs within an Apache Tomcat container. PhixFlow supports installation on both Linux and Windows based servers.
- Database Server - PhixFlow uses any major JDBC compliant database to store both configuration data and the results of analysis on data collected from other systems.
Please refer to Compatibility Guide and Upgrade Planning for infomation on supported databases and supported versions of versions Tomcat.
Figure 1 shows the most typical deployment of PhixFlow in which the application server and database server run on separate machines, however, for small proof of concept installations a single server may be used to host both the application and database servers.
Figure 1 Dual Server High Level Architecture
This page gives some indicative sizings for the servers you will need to run PhixFlow. The exact resource levels you need will depend on the details of your solution, how complex the calculations it has to perform, and how many concurrent users you need to handle. In many virtualised environments it is straightforward to change the level of CPU and memory (see Resizing servers for the server configruation changes you need to make after doing this). It is worth monitoring the performance of PhixFlow and the database to get the right balance of performance and cost.
Typical Server Sizes
The following are typical server sizes for small, medium and large installations. For large installations we recommend that you engage a PhixFlow consultant to verify requirements and analyse data volumes to be processed and retained within PhixFlow. Please note that backup/recovery capacity is excluded in these sizing estimates.
The indicative sizings are the same regardless of operating system (Windows or linux) and the chosen database.
| Server Size | |||
---|---|---|---|---|
Small | Medium | Large | ||
Daily records | 1m | 10m | 70m | 200m100m |
Application Server | ||||
CPU cores | 4 | 128 | 2416 | |
Memory | 16 GB | 32 GB | 64 GB | |
Disk space1 | 50 GB | 100 GB | 200 GB | |
Database Server | ||||
CPU cores | 2 | 64 | 128 | |
Memory | 4 16 GB | 8 32 GB | 16 64 GB | |
Data disk space2 | 250 GB | 2 TB | 4 TB | |
Redo/Undo space | 40 GB | 400 GB | 800 GB |
Notes:
...
Database Server Disk Configuration
For medium and large implementations the database should be configured for high performance throughput. In particular database performance is significantly affected by the way that the database server disks are configured. Organisations requiring this size of server will generally have their own database administrators who are familiar with this level of planning, however, for clarity the following shows recommendations when setting up a medium installation:
...
Disk Group 1
...
8 x 300 GB in RAID5 configuration (Used for Oracle Data Tablespace) Format the stripe with a block size that is optimal for data throughput. (typically 4Kb)
...
Disk Group 2
...
4 x 146 GB in RAID 1+0 configuration (Used for Oracle Redo) Format the mirror with a block size of 512 bytes. 2 redo groups multiplexed
...
Disk Group 3
...
2 * 146 GB in RAID 1+0 configuration (Used for Oracle Undo) Format the mirror with 4Kb block size
Linux: limit on open file descriptors
On linux a limit can be imposed on the number of open file descriptors a user can have. You can see the current limit by running the ulimit command:
Code Block | ||
---|---|---|
| ||
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3889
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 3889
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited |
The limit is given by the setting open files, in the above example 1,024. This is a common default on linux.
...
- 500 GB | 1 - 2 TB | 4 -8 TB |