Yanlış değerlere bakmışım.
$ top -u murat
top - 04:20:31 up 5 days, 3 min, 1 user, load average: 1.87, 1.39, 1.43
Tasks: 102 total, 2 running, 100 sleeping, 0 stopped, 0 zombie
%Cpu(s): 85.7 us, 14.0 sy, 0.0 ni, 0.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 507256 total, 501560 used, 5696 free, 1868 buffers
KiB Swap: 3145724 total, 123964 used, 3021760 free. 259072 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5329 murat 20 0 336.3m 31.4m 22.6m S 1.0 6.3 0:15.45 php /home/murat/web/xdurumu/app/artisan queue:work --tries=2 --sleep=8 --daemon --queue=lower,low
RES değeri uygulamanın tek başına kullandığı belleği ifade ediyormuş. Genelde masaüstü ortamlarda bellek kullanımı sadece RES bellek değerlerini göterdiği için VIRT bellek kafamı karıştırmış. VIRT değerini dikkate almanın bir anlamı yok.
http://askubuntu.com/questions/176001/what-does-virt-res-and-shr-means-in-the-top-command
Özetle "php artisan queue:work" ile çalışan kuyruk işleyicisi 31.4 mb bellek kullanıyormuş.
L5 ile yazdığım bir uygulama var. API'lerden düzenli aralıklarla veri alıp veritabanına kayıt ediyor. Ama performans sorunu yaşıyorum. Tekrar inceledim. Yukardaki worker çalışırken mysql işlemci kullanımı %80'i buluyor.
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (i686) using readline 6.3
Connection id: 176353
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.44-0ubuntu0.14.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 5 days 21 min 39 sec
Threads: 2 Questions: 27808778 Slow queries: 871 Opens: 452 Flush tables: 1 Open tables: 400 Queries per second avg: 64.179
Veritabanından kaynaklanan sorunum var. Saniyede ortalama 64 tane sorgu çok mu fazla bir sorgudur? Veritabanından kaynaklanan performans sorunu var. Delete işlemleri veritabanı çok meşgul ediyordu. Çözüm olarak silinecek olan veriyi bir kısmını cache attıp tüm tabloyu silip tekrar oluşturuyorum.100K satırı 8 saatte silemiyordu.. Mysql performansı berbatmış. Başka veritabanı kullanmak istiyorum ama diğer projeler de aynı veritabanını kullandığı için şuan için değiştirmek çok can yakıcı olabilir.