mgsmus yazdı
storage->framework->session dizininde çok büyük bir dosya birikiyor ve bu dosyaları kendiliğinden hiç silmiyor, eklemeye devam ediyordu.
Okuma yazma izinleriyle ilgili probleminiz var gibi. Eğer config/session.php içerisinde lifetime ile oynama yapmadıysanız dosya izinleri ile ilgili bir problem olabilir. Normalde siliyor.
Redis ile ilgili kısımda ise yine okuma yazma problemi sanırım. redis.conf dosyası içerisinde dir ./ kısmında ./ yerine okuma yazma izni problemi olmayan bir dizin yolu girin öyle deneyin, ör /var/www/site.com/storage/redis/ gibi (redisi restart etmeyi unutmayın),
@mgsmus cevabın için teşekkür ederim. Seninde belirttiğin gibi session lifetime ı artırmıştım ve dosyaların silinmeme sebebinin bu olduğunu sayende anladım ama ben hep redis e geçmek istemiştim. Onuda biraz araştırarak çözüme ulaştım.
Redis in kurulumunu yaptıktan sonra eğer hiç bir ayar yapmaz isek memory için redis herhangi bir sınır tanımıyor. Yani kullanabileceği kadar ram kullanıyor ve sistemin tüm kaynağını kullandığı için patlıyor. Redisi restart edince ancak çalışmaya başlıyor.
Redis dökümanları ve
http://oldblog.antirez.com/post/redis-as-LRU-cache.html adresi gibi farklı adreslerden de anlaşılacağı üzere 3 temel ayar yapılarak redis etkin bir şekilde kullanılabiliyor.
Redis kurulumu için
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis
sudo nano /etc/redis/redis.conf
komutu ile ile düzenleyebiliyoruz.
1. si
maxmemory ayarı.
ben digitalocean da 512 RAM olan en düşük paketi kullanıyorum şimdilik ve Redis için maxmemory i 256 mb ayarladım.
2. si
maxmemory-policy ayarı.
bunun için kullanılabilecek 5 parametre var.
This new configuration option is used to specify the algorithm (policy) to use when we need to reclaim memory. There are five different algorithms now:
volatile-lru remove a key among the ones with an expire set, trying to remove keys not recently used.
volatile-ttl remove a key among the ones with an expire set, trying to remove keys with short remaining time to live.
volatile-random remove a random key among the ones with an expire set.
allkeys-lru like volatile-lru, but will remove every kind of key, both normal keys or keys with an expire set.
allkeys-random like volatile-random, but will remove every kind of keys, both normal keys and keys with an expire set.
Ben bunlardan volatile-lru yu tercih ettim. bu şekilde redis uzun süre kullanılmayan keyleri silip (ki bu bana uygun) yenisini ekliyor ve redis 256 mb dan fazla ram i asla tüketmiyor.
(redis-cli -> info memory komutu ilede görülebilir.)
3. olarak ise
maxmemory-samples ayarı.
The last config option is used to tune the algorithms precision. In order to save memory Redis just adds a 22 bits field to every object for LRU. When we need to remove a key we sample N keys, and remove the one that was idle for longer time. For default three keys are sampled, that is a reasonable approximation of LRU in the long run, but you can get more precision at the cost of some more CPU time changing the number of keys to sample.
Bunu ise 5 olarak ayarladım ki genelde tavsiye edilen bu.
Sonuç olarak ben bu ayarları yaptığımda artık redis i sorunsuz olarak kullanabildim. sitemin hızı benim için oldukça başarılı. Anlık 20 - 30 kullanıcı sitede dolaşıyor zaman zaman ve hiç bir sıkıntı yok 512 mb ram olmasına rağmen.
Bir de şunu farkettim, daha önce 1 GB ram olan paketi kullanırken, digitalocean sayfasından droplet i on/off yapıyordum zaman zaman, uyarıya daha sonra dikkat edince bunun tavsiye edilmediği ve terminalden kapatılması gerektiği, aksi halde veri kayıpları yaşanabileceği yazıyordu. Ben bu şekilde kullanırken cpu kullanım oranım ortalama %50 lerde olup zaman zaman %130 lara çıkıp sunucu kapanabiliyordu. Droplet i on/off ettikçe sanırım framework dosyalarında bozulma veri kaybı vs. olduğundan böyle bir durum ortaya çıktı. Baştan temiz kurulum yapınca artık sorun kalmadı.
Şimdi sunucumu yeniden kurdum, redis i yapılandırdım, günlük 1000 ziyaretçi var ve kaynak kullanımları çok düşük. Aşağıda son kaynak kullanımları görebilirsiniz.
Umarım digitalocean ve laravel kullanan ve sorun yaşayanlar için faydalı olur, ben bu işlerin acemisiyim kendi başıma araştırarak bir şeyler öğrenmeye çalışıyorum, zaman zaman çok basit şeyler için uzun zaman kayıpları yaşadığım oluyor. Aynı sıkıntılar için umarım başkaları daha çabuk sonuca ulaşırlar bu sayede.