Xylitol

Рейтинг
47
Регистрация
17.08.2012
sbseo:
Итоги данной сетки:
Прикрутил к сетке менеджер ссылок. Теперь ботам яндекса и гугла показываются ссылки, которые надо проиндексировать на основных сетках. Боты тут пасутся регулярно, очередь быстро заканчивается. Штука так понравилась, что решил не удалять эту сетку, пока она себе сервер покупает.

Какой менеджер?

Предел на серере достигнут в чем? место на диске?

LEOnidUKG:
Ну можете докупить SSD и перекинуть туда mysql весь, должно полегче стать.

А не станет узким местом канал с сервером, на который бд поставить? Скорость обмена всяко меньше будет, чем с диском напрямую

Таблица похудела потому, что очистил.

Мне кажется, что еще большой затык в дисковой подсистеме сервера

https://gyazo.com/d562e1d4d21cda1aef47b6e217ee046c

---------- Добавлено 03.01.2017 в 14:16 ----------

Metal_Messiah:
Ну нельзя работать с такими большими таблицами. НЕЛЬЗЯ! Разве что если это не Amazon RDS или если вся таблица не лежит на RAM или SSD диске.
Таблицу надо бить на несколько. У меня пара гигов исторических записей на сколько-то лимонов тормозила, переписал скрипт под работу с разными таблицами - на актуальные данные из одной, если нужно подгрузить исторические (редко нужно) то и вторая тоже.

на данный момент никак не могу изменить структуру таблиц. Не мой скрипт :(

Vin_cent:
1. Сделать раздел mysql tmpdir на ram диске (tmpdir=/mnt/ramdisk):
mkdir -p /mnt/ramdisk
chown mysql:mysql /mnt/ramdisk
mount -t tmpfs -o size=8024M tmpfs /mnt/ramdisk

2. Если запросы короткие и простые, то можно попробовать вообще отключить mysql кэш: query_cache_type=0

3. Если таблицы myisam используются в основном для чтения, то в innodb переводить их нет смысла.

И покажи вывод mysqltuner.pl

Перевел временные файлы на рамдиск.

Вывод mysqltuner:


>> MySQLTuner 1.6.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.50-MariaDB
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +Aria +BLACKHOLE +CSV +FEDERATED +InnoDB +MRG_MYISAM  [--] Data in MyISAM tables: 21G (Tables: 3890)
[--] Data in InnoDB tables: 408M (Tables: 37)
[--] Data in MEMORY tables: 5M (Tables: 8)
[!!] Total fragmented tables: 243

-------- Security Recommendations -------------------------------------------
-------- Performance Metrics -------------------------------------------------
[--] Up for: 49s (150K q [3K qps], 6K conn, TX: 7B, RX: 19M)
[--] Reads / Writes: 95% / 5%
[--] Binary logging is disabled
[--] Total buffers: 3.0G global + 70.3M per thread (300 max threads)
[OK] Maximum reached memory usage: 6.6G (21.03% of installed RAM)
[OK] Maximum possible memory usage: 23.6G (75.39% of installed RAM)
[OK] Slow queries: 0% (58/150K)
[OK] Highest usage of available connections: 17% (52/300)
[OK] Aborted connections: 0.01% (1/6945)
[!!] Query cache efficiency: 15.2% (22K cached / 146K selects)
[!!] Query cache prunes per day: 58774922
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 8K sorts)
[OK] Temporary tables created on disk: 0% (0 on disk / 8K total)
[OK] Thread cache hit rate: 91% (625 created / 6K connections)
[!!] Table cache hit rate: 1% (401 open / 31K opened)
[OK] Open file limit used: 18% (744/4K)
[OK] Table locks acquired immediately: 99% (182K immediate / 182K locks)

-------- MyISAM Metrics -----------------------------------------------------
[!!] Key buffer used: 41.3% (55M used / 134M cache)
[OK] Key buffer size / total MyISAM indexes: 128.0M/4.3G
[OK] Read Key buffer hit rate: 96.1% (5M cached / 200K reads)
[!!] Write Key buffer hit rate: 0.1% (5K cached / 5K writes)

-------- InnoDB Metrics -----------------------------------------------------
[--] InnoDB is enabled.
[OK] InnoDB buffer pool / data size: 2.0G/408.4M
[OK] InnoDB buffer pool instances: 2
[!!] InnoDB Used buffer: 2.59% (3393 used/ 131070 total)
[OK] InnoDB Read buffer efficiency: 95.63% (62690 hits/ 65555 total)
[!!] InnoDB Write buffer efficiency: 0.00% (0 hits/ 1 total)
[OK] InnoDB log waits: 0.00% (0 waits / 346 writes)

-------- AriaDB Metrics -----------------------------------------------------
[--] AriaDB is disabled.

-------- Replication Metrics -------------------------------------------------
[--] No replication slave(s) for this server.
[--] This is a standalone server..

-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Restrict Host for user@% to user@SpecificDNSorIp
MySQL started within last 24 hours - recommendations may be inaccurate
Increasing the query_cache size over 128M may reduce performance
Increase table_open_cache gradually to avoid file descriptor limits
Read this before increasing table_open_cache over 64: http://*******/1mi7c4C
Beware that open_files_limit (4000) variable
should be greater than table_open_cache ( 400)
Variables to adjust:
query_cache_limit (> 64M, or use smaller result sets)
query_cache_size (> 256M) [see warning above]
table_open_cache (> 400)


То есть, получается, что иннодб производительнее?

LEOnidUKG:
Лучше всё на innodb переведите.

Я так понимаю, что это можно сделать из phpmyadmin ?

LEOnidUKG:
Воу Воу!!! Полегче с этими параметрами. 256М под первый и 3М под второй, выше крыши.
Иначе когда он заполниться такие затупы будут.

Если все таблицы в innoDB, то на скорость влияет:
innodb_buffer_pool_size

так всё же таблицы в innodb, я надеюсь?

в innodb только здоровая таблица с "кэшем". Остальные myisam

а параметры попробую поменять.

Переделка скрипта займет неопределенное время, к сожалению. Я надеялся, что можно с помощью какой-нибудь простой хитрости увеличить отзывчивость системы.

---------- Добавлено 31.12.2016 в 00:16 ----------

edogs:
Даже если скрипт категорически не изменить, у Вас есть вариант включить slow query лог и посмотреть на тормозящие запросы. Возможно их получится ускорить проставив индексы.

А тормозить это сколько секунд на запрос?
Сервер так-то неплохой. Памяти может оказаться достаточно для индексов, тогда ситуация изменится если их правильно натыкать. Если деньги карман не жмут, мы бы ssd поставили какой-нибудь хороший.

Вообще покажите my.ini , без этого будет обсуждение сферического коня в вакууме.

А разве индексы можно произвольно тыкать?

На счет переезда на сервер с ссд здесь, конечно, вопрос и финансовый и сомнения терзают. Не сомневаюсь, что если даже и переехать на ссд, то увеличив объем обрабатываемых данных в два раза, он так же ляжет.

Мне кажется, что все же как-то можно более эффективно использовать текущее железо.

Вот my.cnf


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

skip-external-locking
key_buffer_size = 2048M
max_allowed_packet = 32M
#table_open_cache = 2048
#table_cache = 2048
sort_buffer_size = 2M
join_buffer_size = 2M
read_buffer_size = 512K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 4096M
query_cache_limit = 64M
#query_cache_type = 0
#query_cache_size = 0M
thread_concurrency = 8

#innodb_use_native_aio = 0
innodb_file_per_table
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 8

#max_connections=300
#max_user_connections=400
max_connections=8
#wait_timeout=300
#interactive_timeout=300
long_query_time=1

#slow_query_log=1
#slow_query_log_file=/var/log/mysql-slow-queries.log

## Fine
default-storage-engine=MyISAM
tmp_table_size=8G
max_heap_table_size=8G
open_files_limit=4000
back_log = 150
#max_user_connections=100



[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
vandamme:
мало вводных данных чтобы дать полноценный ответ

Есть скрипт (не мой, изменить не могу, закодирован). Работает с базой mysql. Сейчас база занимает размер около 50гигабайт. Скрипт, на сколько я знаю, активно использует одну таблицу, размером около 30gb, для хранения каких-то промежуточных данных. Когда эта таблица имеет маленький размер, сотни кб, все работает хорошо. При разрастании до указанного размера сильно увеличивается нагрузка на сервер и все тормозит.

---------- Добавлено 30.12.2016 в 23:45 ----------

edogs:
Переедьте на хостинг где побольше оперативки и где пошустрее диски. Если у Вас не мегапроект (а судя по вопросу это так), то это будет на порядок дешевле чем колхозить оптимизации в текущей ситуации (что со скриптом, что с настройками мускула).

В общем случае это не так.

Сервер сейчас такой

https://gyazo.com/dfa4815c9062a063e9fe18579244b72e

Всего: 64