Perangkat lunak Apache Tomcat® adalah perangkat lunak open source yang telah banyak digunakan pada skala besar, aplikasi web kritikal pada banyak industri dan organisasi. Data dapat disimpan ke dalam basis data MySQL, MariaDB dan basis data lainnya.
Konfigurasi Tomcat dan MySQL
Server Tomcat dapat memberikan performa yang handal untuk aplikasi web apabila pengaturannya tepat.
— Konfigurasi Tomcat dan MySQL untuk ZK, Sekedar Catatan
[Update: 8 Januari 2020, 29 Juni 2021]
ZK is the leading enterprise Ajax framework and the easiest way to build great modern Java web applications. ZK is trusted and established with a solid track record as the framework of choice across industries. Tens of thousands of developers use ZK to build their mission critical systems including multi-million dollar systems that serve millions of users and tens of thousands of concurrent sessions on an international scale. With over 1,500,000 downloads, ZK empowers a wide variety of companies and institutions, ranging from small to large in multiple industries. ZK provides an excellent end to end productivity boost over other frameworks by providing a shallow learning curve and solutions for rapid development. ZK offers a fast development environment enabling UI designers and business analysts to come together and make on-the-fly changes to the UI. ZK supports all major patterns of development such as MVC, data-binding, templating, among others. (sumber: https://www.zkoss.org/whyzk/TopReasons, diambil tanggal 23 Januari 2017)
WARNING!!
- Berdasarkan pengalaman pribadi, apabila ada setting yang tidak dapat diimplementasikan atau error, maka di luar tanggung jawab kami. Server yang digunakan berbasis UBUNTU (turunan dari Debian)
- Nilai yang tercantum sangat tergantung dari resourse yang di miliki, misalnya berapa kapasitas RAM, dan sebagainya
Setting Tomcat
- Konfigurasi Server Dengan TMPFS dapat dilihat pada tautan https://pdsi.unisayogya.ac.id/konfigurasi-server-dengan-tmpfs/
- Di setiap project ZK, buat file WEB-INF/zk.xml, dengan isi
<?xml version="1.0" encoding="UTF-8"?>
<zk>
<system-config>
<max-upload-size>-1</max-upload-size>
</system-config>
</zk> - Spesifik Tomcat 6
- Install Manager, ketik apt-get install tomcat6-admin di terminal
- Setting manager, ketik
nano /usr/share/tomcat6-admin/manager/WEB-INF/web.xml
di terminal, ubah batasan upload dengan menyesuaikan/menambah baris:<multipart-config>
<!-- 70MB max -->
<max-file-size>73400320</max-file-size>
<max-request-size>73400320</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config> - Setting admin untuk menggunakan Manager, ketik
nano /etc/tomcat6/tomcat-users.xml
di terminal, kemudian tambahkan baris berikut di dalam <tomcat-users>:<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="admin" password="passwordnya" roles="manager-gui,admin"/> - Setting pengggunaan memori, ketik
nano /etc/default/tomcat6
di terminal, ubahJAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC"
menjadiJAVA_OPTS="-server -Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Xms5461m -Xmx5461m -XX:NewRatio=3 -XX:SurvivorRatio=6 -XX:PermSize=1365m -XX:MaxPermSize=1820m -Xmn1820m -XX:+CMSIncrementalMode -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:+CMSClassUnloadingEnabled"
di mana 5461 didapat dari 2/3 RAM, 1365 didapat dari 1/6 RAM dan 1820 didapat dari 4/18 RAM. - Setting direktori temp, ketik
nano /etc/default/tomcat6
di terminal, tambahkan di bawah #JVM_TMP=/tmp/tomcat6-temp, teksJVM_TMP=/ram_tmp/tomcat
- Setting koneksi tomcat, ketik
nano /etc/tomcat6/server.xml
di terminal, komentari Connection yang ada di dalam tag <Service name=”Catalina”>, seperti: <!– <Connection … /> –>, kemudian tambahkan baris:<Executor name="threadPool-xxx" namePrefix="xxx-pool-" maxThreads="10000" minSpareThreads="20"/>
<Connector port="7070" executor="threadPool-xxx" protocol="HTTP/1.1" connectionTimeout="20000" compression="on" maxKeepAliveRequests="1" redirectPort="8443" maxPostSize="0" acceptCount="10000" socket.appReadBufSize="1024" socket.appWriteBufSize="1024" bufferSize="1024"/>
(tambahan, sumber: https://blog.krecan.net/2010/05/02/cool-tomcat-is-able-to-handle-more-than-13000-concurrent-connections/) - Ketik
nano /etc/tomcat6/context.xml
di terminal, ubah baris <context> seperti berikut<Context allowLinking="true">
- Restart server sehari sekali, ketik
crontab -e
di terminal, kemudian tambahkan baris0 0 * * * /sbin/shutdown -r now
- Buat link ke folder upload file, misalnya di /var/foto, ketik
ln -s /usr/share/tomcat6/upload /var/foto
di terminal - Setting swappiness dan limit, ketik
nano /etc/sysctl.conf
di terminal, kemudian tambahkan:kernel.pid_max = 65536
fs.file-max = 65536
vm.swappiness=5
di mana 65536 dapat disesuaikan dengan kondisi - Setting limit, ketik
nano /etc/security/limit.conf
di terminal, kemudian tambahkan:* hard nofile 65535
* soft nofile 65535
root hard nofile 65535
root soft nofile 65535
di mana 65536 dapat disesuaikan dengan kondisi - Jangan lupa, semua permisi harus sesuai, ketik
chown -R tomcat6:tomcat6 /var/lib/tomcat6/webapps
di terminal
- Spesifik Tomcat 8
- Install Manager, ketik
apt-get install tomcat8-admin
di terminal - Setting manager, ketik
nano /usr/share/tomcat8-admin/manager/WEB-INF/web.xml
di terminal, ubah batasan upload dengan menyesuaikan/menambah baris:<multipart-config>
<!-- 70MB max -->
<max-file-size>73400320</max-file-size>
<max-request-size>73400320</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config> - Setting admin untuk menggunakan Manager, ketik
nano /etc/tomcat8/tomcat-users.xml
di terminal, kemudian tambahkan baris berikut di dalam <tomcat-users>:<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui" />
<role rolename="admin-script" />
<user username="admin" password="passwordnya" roles="manager-gui,admin,admin-gui,admin-script"/> - Setting pengggunaan memori, ketik
nano /etc/default/tomcat8
di terminal, ubahJAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC"
menjadiJAVA_OPTS="-server -XX:+UseG1GC -Xms1365m -Xmx5461m -XX:+DisableExplicitGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:ParallelGCThreads=7 -XX:ConcGCThreads=2"
di mana 5461 didapat dari 2/3 RAM dan 1365 didapat dari 1/4 dari 5461. 7 adalah jumlah core CPU dikurangi 1 (lihat di top/htop) - Setting direktori temp, ketik
nano /etc/default/tomcat8
di terminal, tambahkan di bawah #JVM_TMP=/tmp/tomcat8-temp, teksJVM_TMP=/ram_tmp/tomcat
- Setting koneksi tomcat, ketik
nano /etc/tomcat8/server.xml
di terminal, komentari Connection yang ada di dalam tag <Service name=”Catalina”>, seperti: <!– <Connection … /> –>, kemudian tambahkan baris:<Executor name="threadPool-xxx" namePrefix="xxx-pool-" maxThreads="10000" minSpareThreads="20"/>
<Connector port="7070" executor="threadPool-xxx" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" compression="on" maxKeepAliveRequests="1" redirectPort="8443" maxPostSize="-1" acceptCount="10000" socket.appReadBufSize="1024" socket.appWriteBufSize="1024" bufferSize="1024"/>
(tambahan, sumber: https://blog.krecan.net/2010/05/02/cool-tomcat-is-able-to-handle-more-than-13000-concurrent-connections/) - Setting koneksi tomcat, ketik
nano /etc/tomcat8/server.xml
di terminal, cari dan sesuaikan baris di bawah ini<!-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html -->
<GlobalNamingResources>
<!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml"
testOnBorrow="true"
validationQuery="SELECT 1"
validationInterval="30000"
/>
</GlobalNamingResources> - Ketik
nano /etc/tomcat8/context.xml
di terminal, tambahkan di dalam <context> baris berikut<Resources allowLinking="true" />
- Restart server sehari sekali, ketik
crontab -e
di terminal, kemudian tambahkan baris0 0 * * * /sbin/shutdown -r now
- Buat link ke folder upload file, misalnya di /var/foto, ketik
ln -s /usr/share/tomcat8/upload /var/foto
di terminal - Setting swappiness, ketik
nano /etc/sysctl.conf
di terminal, kemudian tambahkan:kernel.pid_max = 65536
fs.file-max = 65536
vm.swappiness=5
di mana 65536 dapat disesuaikan dengan kondisi - Setting limit, ketik
nano /etc/security/limit.conf
di terminal, kemudian tambahkan:* hard nofile 65535
* soft nofile 65535
root hard nofile 65535
root soft nofile 65535
di mana 65536 dapat disesuaikan dengan kondisi - Jangan lupa, semua permisi harus sesuai, ketik
chown -R tomcat8:tomcat8 /var/lib/tomcat8/webapps
di terminal
- Install Manager, ketik
MySQL
- Konfigurasi Server Dengan TMPFS dapat dilihat pada tautan https://pdsi.unisayogya.ac.id/konfigurasi-server-dengan-tmpfs/
- Restart server sehari sekali, ketik
crontab -e
di terminal, kemudian tambahkan baris0 0 * * * /sbin/shutdown -r now
- Setting swappiness, ketik
nano /etc/sysctl.conf
di terminal, kemudian tambahkan:kernel.pid_max = 65536
fs.file-max = 65536
vm.swappiness=5
di mana 65536 dapat disesuaikan dengan kondisi - Setting limit, ketik
nano /etc/security/limit.conf
di terminal, kemudian tambahkan:* hard nofile 65535
* soft nofile 65535
root hard nofile 65535
root soft nofile 65535
di mana 65536 dapat disesuaikan dengan kondisi - Spesifik Ubuntu 12.04
- Setting MySQL, ketik
nano /etc/mysql/my.cnf
di terminal, kemudian setidak-tidaknya terdapat settingwait_timeout = 86400
interactive_timeout = 86400
open_files_limit = 65535
di mana 65536 sama dengan nilai yang ada di limit.conf
- Setting MySQL, ketik
- Spesifik Ubuntu 16.04
- Setting MySQL, ketik
nano /etc/mysql/mysql.conf.d/mysqld.cnf
di terminal, kemudian setidak-tidaknya terdapat settingwait_timeout = 86400
interactive_timeout = 86400
open_files_limit = 65535
di mana 65536 sama dengan nilai yang ada di limit.conf - Setting limit MySQL, ketik
nano /lib/systemd/system/mysql.service
di terminal, kemudian tambahkan baris berikut di areal [Service]LimitNOFILE=infinity
LimitMEMLOCK=infinity - Restart service, ketik
systemctl daemon-reload && service mysql restart
di terminal - Jalankan
nano /etc/mysql/conf.d/disable_strict_mode.cnf
di terminal, kemudian tambahkan[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION - Terjadi permasalahan setting server MySQL di ubuntu 16.04 MySQL 5.7, yaitu konfigurasi /etc/mysql/my.cnf dan /etc/mysql/mysqld.conf.d/mysqld.conf tidak dieksekusi semua. Pertama, coba cek konfigurasi dengan perintah
mysqld --help --verbose
. Jika tidak ada yang bermasalah, maka coba hidupkan mysql dengan cara mengetikkanservice mysql start
, kemudian lihat parameter yang digunakan. Apabila tidak sama dengan file konfigurasi, maka buat cron, dengan mengetikkancrontab -e
. Beri penjadwalan, misalnya:*/10 * * * * mysql -u root -ppasswordanda -e "SET @@GLOBAL.max_allowed_packet=16*1024*1024;SET @@GLOBAL.max_connections=10000;SET @@GLOBAL.long_query_time=2;SET @@GLOBAL.expire_logs_days=10;SET @@GLOBAL.max_binlog_size=100*1024*1024;SET @@GLOBAL.wait_timeout=1800;SET @@GLOBAL.interactive_timeout=1800;SET @@GLOBAL.event_scheduler=ON;SET @@GLOBAL.read_buffer_size=128*1024;SET @@GLOBAL.key_buffer_size=6349*1024*1024;SET @@GLOBAL.table_open_cache=12288;SET @@GLOBAL.thread_cache_size=8192;SET @@GLOBAL.sort_buffer_size=8192*1024;SET @@GLOBAL.read_buffer_size=8192*1024;SET @@GLOBAL.read_rnd_buffer_size=8192*1024;SET @@GLOBAL.max_user_connections=0;SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_IN_DATE,NO_ZERO_DATE';"
sumber: https://www.percona.com/blog/2007/09/17/mysql-what-read_buffer_size-value-is-optimal/ - Beri penjadwalan restart mysql jika mysql mati dengan mengetikkan crontab -w. Beri penjadwalan berikut:
*/10 * * * * if [[ ! "$(/usr/sbin/service mysql status)" =~ "running" ]]; then /usr/bin/service mysql restart fi
- Pastikan server bisa ping ke DNS
- Setting MySQL, ketik
Demikian, semoga bermanfaat. [bst]
3 replies on “Konfigurasi Tomcat dan MySQL untuk ZK, Sekedar Catatan”
saya pernah belajar tomcat. pernah ketemu di waktu belajar bikin web d local host
Apa maksud dari konfigurasi Tomcat?
Soalnya saya baru baca istilah tersebut
Konfigurasi server apache tomcat (http://tomcat.apache.org/)