8Gb RAM Debian VPS-сервер -дің my.cnf файлын баптау

Осыдан 1 жыл бұрын Қазақстандық хостерлердің қызметіне көңілім толмай, көршілердің хостинг қызметтеріне жүгінген болатынмын. Басты себеп: Хостинг бағасы.
Қазақстандағы хостинг ұсынушы компаниялар бәсекелестікке төтеп бере алмайды. Бұл тақырыпты ұзақ созбай-ақ, қысқаша сипаттап кетейін.
1. Қазақстандық орташа ВПС-сервер, айына 15 000 теңге төлеуіңіз қажет.
  • 75 GB ақпарат сақтайтын орын.
  • 2 x 2.27 GHz процессор.
  • 3 ГБ оперативті жады
  • 1 IP-адрес
  • ISPmanager 5 Lite тегін беріледі.

2. Мен қолданып жатқан көршілеріміздің ұсынған ВПС-серверінің сипаттамасы. Айына мен 9300 теңге төлеймін.
  • 200 GB RAID-10 HDD винчестер SSD-кэшпен
  • 4x2000 Xeon (МГц)
  • 8 Гб оперативті жады
  • 1 IP-адрес
  • ISPmanager 5 Lite тегін беріледі.
Бұл жерде мен 1,5 есе жоғары күшті ВПС-серверді 5700 теңгеге арзан алып отырмын, және де егер мен бір жылға бірденен төлейтін болсам 20 пайыз жеңілдік қарастырылған. Айырмашылықтарды көре отырып өзімнің серверімді көрші елден алуға мәжбүр болдым.
Жаз айларында барлық сайттың статискасы төмендей бастайды. Себебі ақпарат іздейтін мектеп оқушылары, студенттер, қызметкерлер жазғы демалыстарына кетуіне байланысты. Осы кезде Сұрақ-Жауап сайтының да статистикасы түседі. Күнде тұрақты түрде 15 мың оқырман сайтқа кіріп, 30-40 мыңдай қаралым жасайды. Аса бір ВПС-серверге күш түсетін көрсеткіш емес. Қалай қыркүйектің бірі болды, сайтқа кіруші қолданушылар саны бірденен артты. Оны мына Гугл Аналистикс графигінен көруге болады.


Кешкі сағат 21:00-22:00-дар шамасында сайтта отырған қолданушылар саны 500-700-ге дейін барған кезде, сервер көтере алмай 500 Bad Gateway қатесі айқайлап шыға келеді.



Мен қолданып отырған ВПС-Сервердің техникалық сипаттамасы аса бір мықты болмаса да, біршама қолданушыны көтере алатын күшке ие. Ары ойланып, бері ойланып серверді таптауға кірістім. Question2Answer скрипті жалпылама бапталған sql-сұраныстарды жасайды. Сондықтан ол жақтан аса бір кінәрат болмауы керек.
Мен жасаған іс-әрекеттер. Сервер Debian-6 32 bit.
1. PHP-ді FastCGI арқылы жіберіп Apache қолданушыларды қабылдап алып, өңдеуді nginx-ке жібердім.

2. PHP APC орнаттым.
apt-get install php-apc

Іске қосу үшін
/etc/init.d/apache2 restart

Негізінен 32 мб орын беріледі. Мен оны 64 мб-қа дейін көтердім. Ол үшін:
/etc/php5/conf.d/apc.ini ашып ішіне 64 мб өзгертеміз.

3. Memcached орнату.
apt-get install memcached php5-memcache

және оның мәндерін өзгерту үшін /etc/memcached.conf кіріп -m 64-ні мен -m 512 ауыстырдым.
4. Mysql-баптауда my.cnf өзгерту. Ол үшін /etc/mysql/my.cnf Менде деректер қоры InnoDB орналасқан. Өзгерте-өзгерте келе мына мәндер ең тиімді болды.

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
language	= /usr/share/mysql/english
skip-external-locking
skip-name-resolve
skip-networking

key_buffer		= 128M
max_allowed_packet	= 16M
thread_stack		= 200K
thread_cache_size       = 16

myisam-recover         = BACKUP
max_connections        = 250
table_cache            = 750

table_definition_cache = 256

query_cache_limit = 4M
query_cache_size = 256M

log_slow_queries	= /var/log/mysql/mysql-slow.log
long_query_time = 1

# * InnoDB
innodb_buffer_pool_size = 950M
innodb_flush_log_at_trx_commit = 0
join_buffer_size = 32M

[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

[mysql]
#no-auto-rehash	# faster start of mysql but no tab completition

[isamchk]
key_buffer		= 16M


Осылай мен серверге түскен ауыртпалықтың біраз бөгінін төмендете алдым. Нәтижесінде сервер жылдам жұмыс жасап, қатты бір ауыртпалық түсіп жатқан жоқтығын байқадым. Егер мен деректер қорына жасалынатын сұраныстар кодын баптап, тағы да ВПС-серверге жүйелі түрде таптаулар жасайтын болсам күнделікті сайтқа кіретін 80-мың қолданушы мен 200 мыңдай көрсетілімды мына сервер қызметін атқара алады.

Нәтижесінде:


p.s. Алып қосар ойларыңыз болса, талқылауға қарсы емеспін :)

  • +3
5 пікір
onlasyn
Memcached не үшін орнаттың?
onlasyn
яғни Q&A memcache-пен жұмыс жасай ма?
vfvtnjd
1) 8 ГБ => 32 bit ?????? неге 64 емес ?
2) жылдамдык маңызды болса php apache_mod ретінде пайдалну қажет
3) симметриялы репликация жасау кажет
raimbek
«innodb_flush_log_at_trx_commit = 0»
мына баптаумен mysql дискті аямай зорлайды, 2 деп қойған дұрыс болар

«key_buffer = 128M»
егер сенде MyISAM табицалар қолданылмаса мынаны барынша төмендеткен дұрыс (мысалы 8M), әйтпесе 128M ешқайда жұмсалынбай босқа алынып тұрады

мынандай заметкам бар еді, қарап көрсең болады paste.ubuntu.com/24174777/
Тек тіркелген қолданушылар ғана пікір қалдыра алады.