Skip to content
This repository has been archived by the owner on Apr 21, 2024. It is now read-only.

Commit

Permalink
Add capabilities for performance tuning
Browse files Browse the repository at this point in the history
  • Loading branch information
Savidude authored and VimukthiPerera committed Aug 27, 2019
1 parent 5382949 commit dcf61c9
Show file tree
Hide file tree
Showing 6 changed files with 162 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,9 @@ Add the configurations to the `custom.yml`. A sample is given below.
```

Follow the steps mentioned under `docs` directory to customize/create new Ansible scripts and deploy the recommended patterns.

## Performance Tuning

System configurations can be changed through Ansible to optimize OS level performance. Performance tuning can be enabled by changing `enable_performance_tuning` in `dev/group_vars/is.yml` to `true`.

System files that will be updated when performance tuning are enabled is available in `files/system`. Update the configuration values according to the requirements of your deployment.
8 changes: 8 additions & 0 deletions dev/group_vars/is-analytics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ target: /mnt
product_package_location: files
jdbc_driver: mysql-connector-java-5.1.47-bin.jar

# Performance tuning configurations
enable_performance_tuning: false
performance_tuning_file_list:
- { src: '{{ product_package_location }}/system/etc/sysctl.conf',
dest: '/etc/sysctl.conf' }
- { src: '{{ product_package_location }}/system/etc/security/limits.conf',
dest: '/etc/security/limits.conf' }

# Set the location the product packages should reside in (eg: "local" in the /files directory, "remote" in a remote location)
pack_location: local
#pack_location: remote
Expand Down
8 changes: 8 additions & 0 deletions dev/group_vars/is.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ target: /mnt
product_package_location: files
jdbc_driver: mysql-connector-java-5.1.47-bin.jar

# Performance tuning configurations
enable_performance_tuning: false
performance_tuning_file_list:
- { src: '{{ product_package_location }}/system/etc/sysctl.conf',
dest: '/etc/sysctl.conf' }
- { src: '{{ product_package_location }}/system/etc/security/limits.conf',
dest: '/etc/security/limits.conf' }

# Set the location the product packages should reside in (eg: "local" in the /files directory, "remote" in a remote location)
pack_location: local
#pack_location: remote
Expand Down
60 changes: 60 additions & 0 deletions files/system/etc/security/limits.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
#

* soft nofile 4096
* hard nofile 65535
* soft nproc 20000
* hard nproc 20000
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4

# End of file
73 changes: 73 additions & 0 deletions files/system/etc/sysctl.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1

net.ipv4.tcp_fin_timeout = 30
fs.file-max = 2097152
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.core.rmem_default = 524288
net.core.wmem_default = 524288
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.ip_local_port_range = 1024 65535

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
7 changes: 7 additions & 0 deletions roles/common/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@
- name: Add wso2carbon user
user: name="{{ wso2_user }}" shell=/bin/bash group=wso2 state=present uid=802

- name: System performance tuning
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
loop: "{{ performance_tuning_file_list }}"
when: enable_performance_tuning

- name: Create Java directory
file:
path: "{{ java_dir }}"
Expand Down

0 comments on commit dcf61c9

Please sign in to comment.