OPcache, APCu Kurulumu ve MariaDB Optimizasyonu [2]

Yazar: | 27 Aralık 2017

WordPress’i nasıl hızlandıracağımızı açıklayan bir dizi makalede, özellikle içerik yönetim sistemi (CMS) kullanan siteleri ele alıyoruz. Bölüm 2’de, yalnızca standart CentOS ortamını kullanarak WordPress’i yaklaşık %40 oranında hızlandırmayı açıklayacağız. OPcache, APCu kurulumu yapacağız ve MariaDB üzerinde yapacağımız birkaç değişiklikle WordPress sunucumuza hız katacağız.

Bölümler

Önceki makalede, WordPress’i yaklaşık %35 daha hızlı çalıştırmak için PHP hızlandırıcı APC’yi (Alternatif PHP Önbelleği) yükledik.

Bu yazıyla devam ederek, aşağıdakileri kullanarak WordPress’i daha da hızlandırmak için CentOS 7’nin standart kütüphanelerini kullanacağız:

  1. PHP yürütme süresi
  2. MySQL yürütme süresi
  3. HTTP yanıt süresi

Apache’yi ve işletim sistemini, dış kütüphaneleri kullanmadan ve sayfa önbelleği almadan optimize ederek yapılandıracağız ve daha fazla hız elde edeceğiz.


OPCache ve APC arasındaki fark

APC, PHP ara kodunu iletmek için kod önbellek özelliği kullanır ve kullanıcı önbelleğini KVS (Anahtar Değer Deposu) olarak belleğe depolar. Bir önceki yazıda, PHP yürütme süresini kısaltmak için kod önbellek özelliğini kullandık. Bu yazıda, başka bir PHP hızlandırıcısı OPCache yükleyerek süreyi daha da kısaltacağız.

OPCache, PHP 5.5 ile birlikte gelen yüksek performanslı bir PHP hızlandırıcısıdır, ancak bunu 5.4’e de yükleyebilirsiniz. Bununla birlikte, OPCache kullanıcı önbelleğinden faydalanmadığı için, APC ile aynı özelliklere sahip olan APCu’yu yükleyeceğiz. Bu kullanıcı önbelleği, çeviri hızlandırmasını optimize etmek için önemlidir.

Bu arada, APC’yi PHP 5.5 sürümünden sonra kullanamazsınız. Bu özellikleri kullanmak isterseniz OPCache ve APCu’yu yüklemeniz gerekir.

Şimdi başlayalım. Bu teknik, önceki ayarlardan itibaren devam eder; bu nedenle, bu noktaya ulaşmak için lütfen önceki makaleleri inceleyin.


OPCache ve APCu Kurulum

Sanal makinemize SSH ile Root olarak giriş yapıyoruz.

sudo su –

Daha sonra, OPCache ve APCu kurmak için pecl komutunu kullanacağız. APCu bir kurulum sihirbazı kullanır, bu nedenle kurulumu tamamlamak için Enter tuşuna basarak devam etmeniz yeterlidir.

pecl install zendopcache-7.0.5
pecl install apcu-4.0.10

CentOS 7 Opcache, APCu kurulum

Sürümü değiştirmek için uzantıları pecl komutuyla kullanabilirsiniz. En yeni sürümün ve hangi PHP sürümünün uyumlu olduğunu kontrol etmek isterseniz, aşağıdaki sitelere bakın:

OPcache: https://pecl.php.net/package/ZendOpcache

APCu: https://pecl.php.net/package/APCu

Ardından, apc.ini dosyasını yeniden oluşturacağız. Aşağıdaki kodu apc.ini dosyasına yapıştırın ve kaydedin. Ayrıca, mevcut apc.ini’ye daha önce eklediğimiz kodları siliyoruz.

nano /etc/php.d/apc.ini

Kod:

[opcache]

zend_extension = /usr/lib64/php/modules/opcache.so

opcache.enable = 1

opcache.enable_cli = 1

opcache.memory_consumption = 128

opcache.interned_strings_buffer = 8

opcache.max_accelerated_files = 4000

opcache.blacklist_filename = /etc/php.d/opcache*.blacklist

[apcu]

extension = apcu.so

apc.enabled = 1

apc.enable_cli = 1

apc.shm_size = 64M

apc.mmap_file_mask = /tmp/apc.XXXXXX

Değişiklikleri kaydetmek için Apache’yi yeniden başlatın.

systemctl restart httpd

Sayfayı yüklemek için anasayfanızı açın ve birkaç kez yenileyin. Benim testimde süre 276 ms idi.

OPCache, APCu pageload time

Ab komutu ile ile optimizasyon öncesiyle bir karşılaştırma testi yapıyoruz.

ab -n 100 -c 10 http://herhangi.net/

Sonuçlar

Server Software:        Apache/2.4.6

Server Hostname:        herhangi.net

Server Port:            80

Document Path:          /

Document Length:        53259 bytes

Concurrency Level:      10

Time taken for tests:   12.087 seconds

Complete requests:      100

Failed requests:        0

Write errors:           0

Total transferred:      5350600 bytes

HTML transferred:       5325900 bytes

Requests per second:    8.27 [#/sec] (mean)

Time per request:       1208.744 [ms] (mean)

Time per request:       120.874 [ms] (mean, across all concurrent requests)

Transfer rate:          432.28 [Kbytes/sec] received

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        0    0   0.1      0       0

Processing:   153 1186 187.9   1186    2396

Waiting:      111 1117 172.6   1118    2248

Total:        153 1186 187.9   1186    2396

Percentage of the requests served within a certain time (ms)

50%   1186

66%   1232

75%   1265

80%   1281

90%   1328

95%   1365

98%   1380

99%   2396

100%   2396 (longest request)

Testimde saniye başı istek 8.27.

Optimize Konusu Sayfa yükleme süresi
(varsayılanla karşılaştırıldığında)
Saniye başı istek
(Requests per second)
Varsayılan kurulum 471 ms 5.25
APC 299 ms (Değişim %36.51) 7.92
OPcache+APCu 276 ms (Değişim %41.40) 8.27

OPcache + APCu ile, varsayılan ayarlara göre %41.40 ve APC’ye göre %7.69 daha fazla performans elde ettik.


Veritabanı Hızlandırma için MariaDB Optimizasyonu

Standart CentOS 7 ile birlikte gelen MySQL veritabanı MariaDB 5.5’tir ve InnoDB’yi varsayılan depolama motoru olarak kullanır. WordPress’in InnoDB’yi nasıl kullandığına etki eden iki parametreyi yapılandıracağız.

MySQL dosyasında şu kodu düzenleyin:

nano /etc/my.cnf.d/server.cnf
[mysqld]

innodb_buffer_pool_size = 512M

query_cache_size = 64M

Değişiklikleri kaydetmek için MariaDB’yi yeniden başlatın.

systemctl restart mariadb

Ana sayfayı birkaç kez yenileyin. Testimde sayfa yükleme süresi 240 ms, saniye başına istek 8.99 idi. Bu yaklaşık %9 farktır ve sorgu önbelleği kaynaklı bir optimizasyondur.

Sorgu önbelleği SELECT sorgularını alır ve veritabanı çalıştırma süresini hızlandırmak için aynı sorgu gönderildiğinde bunları daha sonra kullanmak üzere saklar. PHP hızlandırıcıları gibi, eğer veritabanı güncellenirse önbellek silinir. Ayrıca, sorgu önbelleğini etkinleştirme veya devre dışı bırakma arasında hiçbir fark yoktur.

Sorgu önbelleği varsayılan olarak devre dışıdır. Yukarıdaki işlemde “server.cnf” dosyasına girerek bunu etkinleştirdik.

Diğer parametre innodb_buffer_pool_size, InnoDB veri ve indeksleri için bir bellek önbelleği boyutudur. Varsayılan değer 128MB ancak 512MB olarak değiştirdik. InnoDB, işletim sistemi disk önbelleğini kullanmaması nedeniyle MyIsam’den ayrılır, bu nedenle bu sayı artırmak daha fazla sorguya yanıt verebilir.

Optimize Konusu Sayfa yükleme süresi
(varsayılanla karşılaştırıldığında)
Saniye başı istek
(Requests per second)
Varsayılan kurulum 471 ms 5.25
APC 299 ms (Değişim %36.51) 7.92
OPcache+APCu 276 ms (Değişim %41.40) 8.27
MariaDB Ayarları 240 ms (Değişim %49.04) 8.99

Bir sonraki bölümde, gzip’i etkinleştireceğiz ve MPM + php-fpm yapılandırmasına geçerek daha fazla hız elde edeceğiz.


Serinin tüm bölümleri:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir