LUA 2.1 and LUA 2.2 use a open source object-relational database management system (RDBMS) called PostgreSQL for the storage and maintenance of data used by LUA. This data includes source server, failover server, updates to be downloaded, and download schedules. The version that is currently in use, PostgreSQL 8.2.9, does not have Autovacuum enabled by default or multiple autovacuum workers, and so there may be concerns about how best to tune and maintain the database.
Symptoms
Poor database performance can be indicated by failures in LUA 2.x to distribute content, freezes or crashes in the product, slow processing or other symptoms. PostgreSQL ships with its settings tuned for wide compatibility. All customers are recommended to tune their PostgreSQL settings after a successful installation in order to maximize performance.
Note: The document below contains advanced details on tuning PostgreSQL. Rather than create their own, most LUA 2.x administrators can successfully use the configuration files attached to the article on LiveUpdate Administrator 2.2 Performance Tuning
1. shared_buffers
shared_buffers determines how much memory is dedicated to PostgreSQL use for caching data. Some sources recommend setting shared_buffers up to 25% of a system's RAM.
By default, LUA 2.2 has a value of shared_buffers = 32MB. A setting of 512MB has been effective. Some larger customers have increased this value up to 1024MB and seen great improvements.
2. temp_buffers
temp_buffers are used only for holding temporary tables in memory.
As LUA 2.x does not rely heavily upon these tables, some customers have lowered this value to 2MB as part of their tuning.
3. work_mem
work_mem sets the maximum memory to be used for query workspaces.
By default, this GUC is commented out. Setting work_mem to 256MB has resulted in improvement for some customers.
4. max_fsm_pages
Sets the maximum number of disk pages for which free space is tracked. This value should be set to the maximum number of data pages you expect to be updated or deleted between vacuums.
A value of 20000 has worked well for some customers.
5. wal_buffers
wal_buffers sets the number of disk-page buffers in shared memory for WAL.
A value of 256Kb should be sufficiently large. for healthy LUA 2.x usage
6. checkpoint_segments
checkpoint_segments sets the maximum distance in log segments between automatic WAL checkpoints. Checkpoint warnings appear in the logs when this is not set sufficiently high. Recommended values range from 16 to 128, with greater hard drive space being required the higher the value is set.
By default, LUA 2.2 has the checkpoint_segments commented out (#) so has a default of 3. Some larger customers have increased this value to 30 and seen great improvements.
7. effective_cache_size
effective_cache_size Sets the planner's assumption about the size of the disk cache. That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This GUC tells the PostgreSQL query planner how much RAM is estimated to be available for caching data, in both shared_buffers and in the filesystem cache. effective_cache_size should be set to how much memory is leftover for disk caching after taking into account what's used by the operating system, dedicated PostgreSQL memory, and other applications. Some sources recommend setting effective_cache_size at 50% of a system's RAM. On a server used solely for running LUA 2.2, this might represent most of the system's physical memory.
By default, LUA 2.2 has effective_cache_size commented out, so it uses a default value of 128MB. Some larger customers have increased this value up to 2048MB and seen great improvements.
After changes are made to postgresql.conf, the LUA PostgreSQL service must be restarted. Rebooting the server will effectively restart all services and clean our many cache and temporary files.
Periodic maintenance
To maintain the database performance:
Stop “LUA Apache Tomcat” service. Do NOT stop “LUA PostgreSQL” service. Open a command window and run the following commands. Allow each to complete before beginning the next. Each may require several minutes.
Verify the database using the following command:
Automatically vaccuuming tables
PostgreSQL 8.2.9 has Autovacuum capabilities, but these are not enabled by default. Changing the following values in postgresql.conf should result in a healthier database over time.
After changes are made to postgresql.conf, the LUA PostgreSQL service must be restarted. Rebooting the server will effectively restart all services and clean our many cache and temporary files.
References
Performance Optimization http://wiki.postgresql.org/wiki/Performance_Optimization
VACUUM: http://www.postgresql.org/docs/8.2/interactive/sql-vacuum.html
VACUUMDB: http://www.postgresql.org/docs/8.1/static/app-vacuumdb.html
REINDEXDB: http://www.postgresql.org/docs/8.1/static/app-reindexdb.html
Technical Information
The LUA PostgreSQL service runs under the Local System account. The default path to executable is C:/Program Files (x86)/Symantec/LiveUpdate Administrator/pgsql/bin/pg_ctl.exe runservice -N "LUA PostgreSQL" -D "C:/Program Files (x86)/Symantec/LiveUpdate Administrator/pgsql/data" This should not be altered without good cause.