Bir amatörün sunucu ile imtihanı

Bu yazımda 2010 yılından beri başıma gelen beni günlerce uğraştıran başıma bela olan sorunları ve bu sorunların nasıl üstesinden geldiğimi anlatacağım.Bu yıllarda danışabileceğim kimse olmadığından ve internette türkçe kaynağın çok az olması beni zorladı, sayısız sorunu kendim çözmek zorunda kaldım.İngilizce bilgimin bu yıllarda bile yeterli düzeyde olması çok işime yaramıştı.

2010 yılında yazdığım özel amaçlı script’te performansın bir önemi yoktu script çalışıyorsa çalışıyordur.Fakat aradan geçen 1 yıl süre içerisinde sıkıntılar çıkmaya başladı.
Kullanıcı sayısının artmasından dolayı domainde bulundurduğum yazılımı önce VPS sonra 2013 yılında VDS sunucuma geçirdim.
Yazdığım sistem yavaş çalışıyordu ve neden yavaş çalıştığını domain’de barındırırken anlamam mümkün değildi vps ve vds ye geçmemdeki amaç sunucu kaynaklarının yetersizliğinden kaynaklı bir yavaşlık yaşama ihtimalimi yok etmekti VDS sunucuya geçtiğimde bunun donanımdan kaynaklanan bir yavaşlık olmadığını anlamıştım.Ama neden sistem yavaş çalışıyordu bunu anlamak aylarımı aldı sorunu çözdüğümde ise bu kadar basit bir şey olduğuna çok şaşırdım. Yazdığım sistemde yavaşlık mysql bağlantısı olan sayfalarda oluyordu sorun mysqldeydi ama ben sunucu taraflı sıkıntı olduğunu düşünerek mysql’in my.cfg dosyasını düzenlemiştim nitekim sorunu biraz çözmüştü mysql artık daha az kasıyordu ama hala normal değildi sonra mysql querylerini inceledim ve SELECT from table WHERE column=XXXX(200 characher) şeklinde bir arama yaptırdığımı keşfettim bu sütunda index zaten yok ve WHERE id = şeklinde arama yapmak varken ben 200 karakter üzerinden arama yaptırıyordum ve sistemde en çok kullanılan query bu olduğundan 3000 4000 satırlık bir tabloda bile bu aramayı yapmak mysql için yorucu oluyordu.Neyse ki sonunda bulmuştum sorunu iyi bir deneyim olmuştu benim için.

İlerleyen yıllarda sunucunun kasma sorunu yine baş gösterdi busefer apache’nin yetersizliğinden kaynaklandığını keşfettim ve apacheyi tekrar yapılandırdım ve bir süre hiç sıkıntı yaşamadan çalıştırdım.

Aradan 1 2 yıl geçti ve veri merkezinin yaptığı yeni bir kampanya ile eski sunucunun 2 katı RAM’a sahip ve cpu hdd v.s daha performanslı bir sunucuya geçtim aynı zamanda fakat yeni sunucuma Ubuntu kurarak yeni bir deneyim elde etmek istedim ayrıca eskiden CentOS sunucumda apache nin mod_php modülünü kullanıyorudum yeni Ubuntu sunucumda modası geçmiş mod_php yerine php-fpm kullanmaya karar verdim ama sunucu çok fazla kasıyordu sorunu plesk e danışarak fpm ayarlarının yükseltilmesi gerektiğini öğrendim ve plesk le birlikte aşağıdaki yazımdaki çözümü uyguladık.

Plesk 12 PHP-FPM performans ayarı

Böylece sunucu kullanılabilir duruma gelmişti artık sıkıntı yoktu fakat aslında yok gibi gözüküyordu bir süre sonra gece sunucu kitlendi ve farkedip yeniden başlatmak istediğimde sunucunun başlamadığını gördüm.
Sunucunun başlamadığını gördüğünüzde eliniz kolunuz bağlanıyor çünkü sunucuya ssh üzerinden bile erişiminiz yok.Sunucu boot bile etmiyor neyse ki Hetzner’in sorun yaşadığınızda KVM over IP verdiğini bildiğim için hemen talep ettim sunucu açılmıyordu fakat neden onu bulmam lazım KVM ekranını açtım ve sunucuyu resetledim aldığım hata
a start job is running for Create Volatile files and directories” with a timer and no limit
gibi değişik bir hataydı aşağıdaki yazımda sorunun neden kaynaklandığını ve nasıl çözdüğümü anlattım.

a start job is running for Create Volatile files and directories” with a timer and no limit (Çözüldü)

Sunucular Linux üzerine kurulu küçük bebek gibiler sorunun nereden kaynaklandığını anlayamazsınız içerisinde yüzlerce servisi çalıştırırlar ve siz sorunun hangi servisten kaynaklandığını bilmeniz gerekir.Örnek vermek gerekirse Mysql’de Apachede Ngnix te herhangi birinde yaşanan sıkıntı bir diğerini etkiliyor örneğin Mysql de bir yavaşlık olduğunda işlemler yavaş gerçekleştiğinden apache’de birikmeye yok açıyor ve apache’nin işlem limitinin dolup kilitlenmesine yol açıyor.Siz apachenin limitleri dolmuş arttıralım diye düşünürken aslında sorun mysql den kaynaklı çıkabiliryor.

Yeni sunucumda yukarıdaki sorunları çözdükten sonra bir süre sorun yaşamadım fakat var olan başka bir sorunu sunucunun yoğunluğunun arttığı saatlerde hissediyordum sayfalaların açılış süresi uzuyordu ve CURL istekleri bazen bağlanamıyor hata veriyordu sayfanın açılış süresi için apacheyi suçlamıştım CURL isteği için de php yi ve parallel curl requests kütüphanemi.
Farklı kütüphaneler denedim apacheyi nginx i tekrar yapılandırdım ama sorun çözülmedi.
Aynı zamanda ftp bağlantımda 8 kb lık dosyanın sunucuya gönderilmesi 30 40 saniye sürüyordu onun için de ISP’mi ftp programımı suçluyordum en son sunucuma ping yolladığımda Request Time Out hatası aldığımda anladım ki sıkıntı başka bir yerde ve online ping yollama sitelerinden biriyle test ettim pingler dünyanın farklı yerlerinde de zaman aşımına uğruyordu sorun ISP’de değildi veri merkezinde olduğunu düşünüdüm ver merkezinin bana sağladığı DDOS firewall ı devre dışı bıraktım bir şey değişmedi acaba sorun veri merkezinde miydi? Hayır değildi veri merkezine Ping Lost hatası olduğuna dair destek talebi açacaktım bana bunun için çift taraflı 10000 tane ping isteği ve raporu istediklerini gördüm sunucuya yolladığım pinglerde %5 drop vardı sunucudan kendi ip adresime yada ttnet’in bir ip adresine ping yolladığımda
sendmsg: Operation not permitted
Gibi bir hata ile karşılaştım sorun sunucunun maksimum bağlantı sayısını aşmasından kaynaklanıyormuş aşağıdaki yazımda da bunu anlattım.

sendmsg: Operation not permitted HATASI (Çözümü)

Aradan yıllar geçtikten sonra konuya bir güncelleme geçmek istedim bir çok kez sorun kötü yapılandırılmış yazılımlardan kaynaklansa da sunucularda donanımsal sıkıntılar oluşabiliyor gerekli araştırma ve denemelerin sonucunda bir sonuca varılamadıysa sunucuda SSD yada RAM arızası gibi donanımsal arıza tespiti yapılmalıdır.

Sunucu Bozuk SSD analizi

Şimdiye kadar yaşadığım sorunun sadece birkaçını bu şekilde özetlemiş oldum benzer sorunları yaşayan arkadaşlara yol göstereceğini ve sorunları çözmeye çalışırken çok iyi analiz yapmalarını ve ASLA VAZ GEÇME‘meleri gerektiğini düşünüyorum.