Yüksek ziyaretçili sitelerde Veritabanı performans arttırımı için vaz geçilmez işlemler arasında yer alan hafızada biriktirme ve yapılacak işleri kuyruğa alıp Veritabanı müsaitliğime göre veri gönderme yüksek oranda sitenin hızını verimliliğini arttırır. Yine ziyaretçilerin davranışlarını toplamak amaçlıda kullanılır. Farenin nerede durduğu, ziyaretçin nereye tıkladığı, sayfanın nesine daha çok baktığı gibi çok fazla istatistiksel veriler içinde aynı şey geçerlidir.
Bunun için ilk önce PHP REDIS sisteme kurmanız gerekiyor. Biz burada Ubuntu 24.04 üzerinde bu işlemleri yapıyoruz.
sudo apt update
sudo apt upgrade
sudo apt install redis-server
Sistemi güncelleyerek redis’i kurdur.
redis-server --version
komutu ile versiyonu kontrol edebilirsiniz. aşağıdaki gibi bir sonuç dönecektir.
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=81c7a5d81c81f4cd 
Kendinize göre redisi ayarlamak isterseniz conf dosyasını açarak aşağıdaki yerleri değiştirebilirsiniz.
sudo nano /etc/redis/redis.conf
bind 127.0.0.1 -::1
port 6379
daemonize yes
sudo systemctl enable redis-server.service
sudo systemctl start redis
sudo systemctl status redis
Satutus durumunu kontrol edin sisteme başırılı bir şekilde kurulmuş ve aktif olup olmadığını göreceksiniz. Ancak işlemler bunula bitmiyor. Sırada kodunuzdan bunu tetikleyecek çekilde ayarlarınızı yapmanız gerekiyor. Bununu için ben Laravel üzerinden sizlere ayarları yazacağım.
.ENV dosyasında aşağıdaki gibi düzenleye bilirsiniz.
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Laravel içinde ayarlar yapılmış demektir. Artık Laravel tetikler ver kuyruğa yapılacak DB kayıt işlemlerini gönderir. Ancak bu gönderim hala hafızıda kuyruktadır. Bu şekilde bırakılmaması gerekiyor.
Kuyruktan alıp belirli aralıklarla DB’ye gönderme işlemide olması gerekiyor. Bunuda iki farklı yoldan yapabiliriz. Horizon ile yada supervisor, biz supervior kullanacağız.
sudo apt install supervisor -y
Kurulum tamamlandıktan sonra aşağıdaki ayarları girelim. Bu servis belirli aralıklarla kuyruktaki işlemleri DB’ye işleyecektir. Olası sunucu yeniden başlatmalarından tekrar çalışması sağlanmış olacaktır.
/etc/systemd/system/laravel-queue.service
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data 
WorkingDirectory=/home/user/public/
ExecStart=/usr/bin/php artisan queue:work redis –queue=default –sleep=3 –tries=3 –timeout=120
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Burada dikkat etmeniz gereken yer User= ve WorkingDirectory= dir. User adı siteyi kurarken oluşturduğunuz ve yetkilendirdiğiniz user adı olmalıdır. yoksa hata alırsınız. WorkingDirectory yine sitenizin bulunduğu yoldur.
Ardından aşağıdaki komutlar ile hazırladığımız servisleri enable, start ve durumunu kontrol edebilirsiniz.
sudo systemctl daemon-reload
sudo systemctl enable laravel-queue.service
sudo systemctl start laravel-queue.service
sudo systemctl status laravel-queue.service
Kuyrukta bekleyen işleri veya tamamlanmış sonuçları görebilirsiniz.
journalctl -u laravel-queue -f
Farklı PHP sürümleri kullanıyorsanız php.ini içinde extension=redis.so ekli olup olmadığını kontrol edin. yoksa ekleyin.
extension=redis.so
Job redis-server.service/stop runnig (…) : Error trying to save the DB, can’t exit. Sunucu reboot sırasında redis servisleri stop edilemiyor diye takılı kalırsa
muhtemelen diskinizde yer kalmamıştır bundan dolayı takılmıştır. Bazı durumlarda Ubuntu LVM (Logical Volume Manager) Diskin %50’sine gelince %100 dolu gösterebilir bu durumda disk genişleştmesi gerekir. Disk genişletmesi için tehlikeli işlem olduğunu unutmayalım önce yedek alalım ardında disk genişletmesi yapalım.
sudo vgdisplay
sudo lvdisplay
komutları ile inceleyin.
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
Tüm boş alanları ekle ext4 df -h ile kontrol edebilirsiniz


