Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

server config


BaaL

Öne çıkan mesajlar

intel xeon quad core 2.4ghz cpu ... 8gb ram

Total database 8000 kusur table var.

Database, gps takip cihazlari icin kullaniyor. Her takip cihazinin (~8k) kendi table'i var. table sayisi ondan yuksek.






my.ini dosyasinin mevcut ayarlari. Google arastirmalariyla bu kadar tweak yapabildim ;

daha başka neler yapabilirim?

------------------------------------------

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer = 64M
max_allowed_packet = 1M

table_definition_cache = 400

sort_buffer_size = 32M
net_buffer_length = 8K
read_buffer_size = 10M
read_rnd_buffer_size = 5M
myisam_sort_buffer_size = 100M
basedir=c:/wamp/bin/mysql/mysql5.6.12
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.6.12/data

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking

# Disable Federated by default
skip-federated

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

# binary logging format - mixed recommended
binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1

# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
# MASTER_USER=, MASTER_PASSWORD= ;
#
# where you replace , , by quoted strings and
# by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host =
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user =
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port =
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin

# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = C:mysqldata/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = C:mysqldata/
#innodb_log_arch_dir = C:mysqldata/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 750M
innodb_additional_mem_pool_size = 50M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 160M
innodb_log_buffer_size = 20M
innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld]
port=3306


----------------------------------------------------------

Asagidakiler de mysqltuner dan aldiklarim. Az once my.ini de bi kac ayar degistirip mysql i restart yaptim o yuzden mysqltunerin verileri %100 saglikli olmayabilir ama 1 hafta calistirip baktigimdaki sonuclarla pek bi fark yok. fragmented tables sayisi bayagi bi yuksek , bilemedim. bazilari optimize yapma diyo , bazilari yap diyo.


MySQL Tuner 0.7 - Peter Chapman
Successfully authenticated with no password - SECURITY RISK!
Currently running supported MySQL version 5.6.12-log
Operating on 64-bit architecture
Archive Engine Installed
Berkeley DB Engine Not Installed
Federated Engine Not Installed
InnoDB Engine Installed
ISAM Engine Not Installed
NDBCLUSTER Engine Not Installed
Data in InnoDB tables: 7G (Tables: 5003)
Data in MyISAM tables: 3G (Tables: 2929)
Total fragmented tables: 2682
Up for: 40m 0s (1M q [523.000 qps], 134K conn, TX: 1G, RX: 93M)
Reads / Writes: 84% / 16%
Total buffers: 901.0M global + 47.5M per thread (151 max threads)
Maximum possible memory usage: 7.9G (98% of installed RAM)
Slow queries: 1% (6/1M)
Highest usage of available connections: 49% (73/151)
Key buffer size / total MyISAM indexes: 64.0M/7.8M
Key buffer hit rate: 99% (168K cached / 43 reads)
Query cache efficiency: 0% (0 cached / 483K selects)
Query cache prunes per day: 0
Sorts requiring temporary tables: 0% (0 temp sorts / 30K sorts)
Temporary tables created on disk: 43% (280 on disk / 662 total)
Thread cache hit rate: 99% (680 created / 134K connections)
Table cache hit rate: 3% (2K open / 58K opened)
Open file limit used: 47% (2K/5K)
Table locks acquired immediately: 99% (580K immediate / 580K locks)
InnoDB data size / buffer pool: 7.8G/750.0M
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Reduce your overall MySQL memory footprint for system stability
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
MySQL's maximum memory usage is dangerously high
Add RAM before increasing MySQL buffer variables
query_cache_limit (> 1M, or use smaller result sets)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
table_cache (> 3000)
innodb_buffer_pool_size (>= 7G)
Scan Complete

Link to comment
Sosyal ağlarda paylaş

Tablolarin tasarimi kotu ise, duzgun index'lenmemisse ne yaparsan yap bosuna. Oncelikle ona bakmak lazim.

Bi ikincisi de cache'i arttirip mumkun oldukta memory ustunden serve etmek lazim. Ozellikle data bir kac gb ise, idle olan memory miktarindan az ise inanilmaz efektif olabiliyo.

Onun disinda mysqltuner'in tavsiyerlerine bakarsin iste.
Link to comment
Sosyal ağlarda paylaş

Açıkçası dataları işleyen server ve çağıran server'ın ciddi anlamda iyi code edilmesi lazım. İşin mysql tweaki ile halledilmesinden çok çok daha kolay. Şu anda 8000+ client seviyesinde 5snde 1, 5snlik gps pozisyonu gönderen, bunun yanında kameralı görüntüleme sistemlerinin yönetimini yapıyorum. Senin sorunun her aygıtın gps kayılarının ayrı tabloda tutulması. Günlük kayıtlar çok çok daha başarılı çalışabilir.

Sistemlerinizi aldığınız çinli üreticiden destek almanızı tavsiye ederim bu konu ile ilgili.

Şu anda iki çinli mühendisle beraber kalıyorum amk. Sırf işin daha akıcı olmasını sağlayabilmek için. Türkiyede bir firma üzerinden sistemleri aldıysanız ve adam gibi çalışan bir sistem istiyorsanız pm :D
Link to comment
Sosyal ağlarda paylaş

BaaL said:

Total database 8000 kusur table var.


Sorun en basta burda. Table basina unique index mevcut, mysql index yonetiminde zaten notorious , unique index lerin ustunde illaki baska indexler de vardir kesin.

Server i dikey de scale etmek gerekli. Ram i arttirip memory/cache den daha cok cevap vermesine izin vermen gerekiyor, diger post larda yazildigi gibi.

Tabii detayli bilmeden mimariyi ahkam kesmemek gerekiyor ama diyelim ki 8001. device i ekleyecegim, bu durumda database e table mi eklemem gerekiyor?

Soruyu yazarken aklima gelen baska bir nokta; Belkide ortamda 8000 tane unique device type var, bu type lardan milyonlarca var calisan, bu durumda bir noktaya kadar table eklenmesine ok denilebilir. Bu durumda da neden relational database, neden document based storage kullanilmamis diye sorabiliriz elin cinlisine ...
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
Gladmir said:

BaaL said:

Total database 8000 kusur table var.


Sorun en basta burda. Table basina unique index mevcut, mysql index yonetiminde zaten notorious , unique index lerin ustunde illaki baska indexler de vardir kesin.

Server i dikey de scale etmek gerekli. Ram i arttirip memory/cache den daha cok cevap vermesine izin vermen gerekiyor, diger post larda yazildigi gibi.

Tabii detayli bilmeden mimariyi ahkam kesmemek gerekiyor ama diyelim ki 8001. device i ekleyecegim, bu durumda database e table mi eklemem gerekiyor?

Soruyu yazarken aklima gelen baska bir nokta; Belkide ortamda 8000 tane unique device type var, bu type lardan milyonlarca var calisan, bu durumda bir noktaya kadar table eklenmesine ok denilebilir. Bu durumda da neden relational database, neden document based storage kullanilmamis diye sorabiliriz elin cinlisine ...


8000 rakami kusuratliydi, su an yaklasik 8400 civari. Ve evet, kullanici yeni device eklendiginde otomatik table aciliyor.

Software yaklasik 300-400 degisik device destekliyor. Bizim kullandigimiz yaklasik 9-10 degisik device var. Gerci hepsinin database e eklenis sekli ayni. Date,coordinates,speed, parametreler vsvs.

Developerlar bu arada litvanya'dan. Bi ara sormustum gunluk kayit yerine neden her cihaz icin ayri bi table tutmayi tercih ettiniz diye. Cevabi "Separate table for every GPS tracker makes history and reports to work faster."

Cache' artirdim. Mysql hala cpu ya abaniyor. Ram kullanimi 1.5gb i gecmiyor.
Link to comment
Sosyal ağlarda paylaş

"Separate table for every GPS tracker makes history and reports to work faster" means "we have no idea what indexing is".

Pic related
http://www.quickmeme.com/img/0e/0ec58dd764b8f2614611249e51e7c879701a16a3a09daf1fca97f43f7578fdb9.jpg

Query cache ne durumda sunucuda ?

https://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html
Link to comment
Sosyal ağlarda paylaş

di said:



Query cache ne durumda sunucuda ?

https://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html


Hatirlattigin icin tesekkurler. Query cache'ler kapaliymis. (query_cache_type=0). Actiktan sonra bariz bi performans artisi oldu.

have_query_cache=yes line'i beni yaniltti.

Bu arada mevcut configuration =
TCP listener ve Wamp (mysql,apache,php) ayni sunucuda (windows). Listenerlarimiz .net , windows only. Wamp'i ayri, daha iyi speclere sahip bi sunucuya tasimak istiyoruz. UK'de bulundugumuz bolgeden bir kac dba firmayla konustuk, sacma sapan fiyatlar istiyorlar. Migration isini once replication set-up yapip (master-slave) , listenerlari yeni slave'in ip sine yonlendirerek yapicaz.

Ilgilenen, yardimci olmak isteyen varsa pm atsin, ucrette anlasabiliriz. Aksi taktirde stackoverflow dan topladigim bilgilerle girisicem.

(not: table larin alayi myisam, en son aldigim backip flush tables with read lock yaptiktan sonra 4-5 saat surmustu.)
Link to comment
Sosyal ağlarda paylaş

bombilo said:

di'nin dediği gibi o gavur arkadaşların ne yaptığını bilmeden otu boku relational db'ye basma sevdasından kaynaklı.

tuner'ın en sonda bahsettiği config önerilerini uyguladın mı?


Evet son kisimdaki ayarlarin hepsini uyguladim. Query cache ozellikle cok farketti. Mysql verileri biraz daha cok ram'den islemeye basladi, cpu rahatladi. Bunlar tabi gecici cozumler ama simdilik biraz daha nefes alabildik.

En kisa zamanda serveri baska bir makinaya tasimayi dusunuyoruz. Mevcut configuration quad core 2.6ghz , 8gb ram , windows os.

Arti baska bir windows server daha var, sadece listener kurulu. Listener apache uzerinden http veri gonderiyor bu makinaya.

Listenerlari oldugu yerde birakip mysql, ve apache yi yeni linux server'a tasimak istiyoruz. (2.4ghz 8 core, 16gb ram).
Link to comment
Sosyal ağlarda paylaş

elesso said:

10.000'de bi server daha ekleyin bence asdf


Her 10.000 de bir bi server eklemek zaten su asamada daha mantikli gozukuyor. Uk'den bir kac firmayla software'in sifirdan yazilimi hakkinda konustuk. Sacma sapan fiyatlar verdi cogu. Gps-Gate 90.000$ istedi falan.

Ayligi $70'den 10 tane server dizerim daha iyi :)
Link to comment
Sosyal ağlarda paylaş

şöyle bir tuning primer'de var istersen ona da bir göz atıver;

https://launchpadlibrarian.net/78745738/tuning-primer.sh

ayrıca Slow queries: 1% demiş ama slow log'a bir göz atsan yine de fena olmaz genel fikir açısından

yazılımın çok atraksiyonu yoksa document store ile yeniden yazalım :D

birde yeni kuracağın server'ı konfigure ederken bak şurada kullanılan tool'ları kullanabilirsin; https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-optimize-mysql-perf/
Link to comment
Sosyal ağlarda paylaş

bombilo said:

şöyle bir tuning primer'de var istersen ona da bir göz atıver;

https://launchpadlibrarian.net/78745738/tuning-primer.sh

ayrıca Slow queries: 1% demiş ama slow log'a bir göz atsan yine de fena olmaz genel fikir açısından

yazılımın çok atraksiyonu yoksa document store ile yeniden yazalım :D

birde yeni kuracağın server'ı konfigure ederken bak şurada kullanılan tool'ları kullanabilirsin; https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-optimize-mysql-perf/


Yazilimin atraksiyonu cok.

www.gpslive.co.uk
gps@demo
123456
Link to comment
Sosyal ağlarda paylaş

RaidenXelRu said:

scale up olmaya ugrasmak bir yere kadar yanliz :)

eger read writedan fazla gerceklesiyorsa, bir tane daha server ekleyin yanina replicate etsin, read querylerini bolusturup ona load yollayin.


Adam hakli beyler. Optimizasyon olmadan baya yalan o scaling olayi evet.

Benim soyle cocugum gibi baktigim bi sunucu var mesela;

http://i.imgur.com/nqw8UoJ.png

DBA'le birlikte oturup cogunu yeniden yarattik SP'lerin tablolarin falan. Baya baya aylarimizi yillarimizi aldi.
Link to comment
Sosyal ağlarda paylaş

Yuh 8000 table ne abi? Her cihazın kendi veritabanına ihtiyacı olması bi yana, veri analizinin ham veri üzerinden çalışması neden ki?

Yani şu an uzaktan görüldüğü kadarıyla yapılmak istenen iş için ilişkisel bi veritabanı kullanmak yanlış.

Koyarsın verini Elastic'e, adam gibi indexlersin, hem analizini çalıştırırsın, hem verini çeker koyarsın, gül gibi geçinip gidersin. Bi de GPS verisi denmiş, aha bunun için de Elastic biçilmiş kaftan işte, mis gibi çakarsın koordinatları indexe, ister uzaklığa göre, ister poligonla ararsın, 15-20ms sonra alırsın cevabını sdf
Link to comment
Sosyal ağlarda paylaş

"The issue with having daily logs for all devices is; lets say if you have 1 million rows in one table. If they would be joined
into one, this would cause even bigger problem. It would be very slow. We tested that before designing the structure."

Developer arkadasin yorumu.

Neyse uzun lafin kisasi ; 1 haftadir ayarlari duzelte duzelte bayagi adam ettim. Kimse mysql'i kurcalamadigi icin hala ilk gun kurduklari default ayarlardaydi mysql. Su an mysql'in cpu kullanimi %40-50 lerden %10-20 lere indi.

Mevcut makina quad core 2.6ghz, wamp'in haricinde listener da calisiyor. Ilk adim olarak mysql ve apache'yi baska bi server'a tasimamiz lazim. 8 core 8gb ram bi linux server ayarladim. Replication kurup migrate yapmamiz lazim ki downtime olmasin. Replication set-up icin yardimci olmak isteyen biri varsa whatsapp (+447737635329) , skype : [email protected]'dan ulasabilir. Ucrette anlasiriz.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...