Скорость memcache на PHP - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.4082
BTC/USD69416.5954
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 03.06.2020, 23:27   #1
Goldswen
Member
 
Регистрация: 15.07.2016
Сообщений: 57
Бабло: $24350
По умолчанию Скорость memcache на PHP

Всем привет, подскажите кто знает с какой примерной скоростью на PHP должен отдавать memcache данные?

Возникла такая ситуация:
Установил memcache, поместил в кеш файл 900 кб - время на отдачу 8 мс
До этого хранил этот файл на диске и скорость чтения (вместе с json_decode) была 11 мс

Как то странно получается что memcache что ssd отдают данные почти одинаково, хотя по идее memcache должен это делать в разы быстрее, ведь данные хранятся в оперативке
Goldswen вне форума  
Старый 03.06.2020, 23:49   #2
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
Отправить сообщение для Hector с помощью Jabber
По умолчанию

А как ты замеры делаешь? Файл же тоже может храниться в оперативке при повторном запросе. Или нет?
Hector вне форума  
Старый 03.06.2020, 23:52   #3
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,236
Бабло: $247846681
По умолчанию

Цитата:
Сообщение от Goldswen Посмотреть сообщение
Всем привет, подскажите кто знает с какой примерной скоростью на PHP должен отдавать memcache данные?

Возникла такая ситуация:
Установил memcache, поместил в кеш файл 900 кб - время на отдачу 8 мс
До этого хранил этот файл на диске и скорость чтения (вместе с json_decode) была 11 мс

Как то странно получается что memcache что ssd отдают данные почти одинаково, хотя по идее memcache должен это делать в разы быстрее, ведь данные хранятся в оперативке
При первом чтении 11 мс? 11 мс это из дискового кеша возможно.
imgreen вне форума  
Старый 03.06.2020, 23:54   #4
Goldswen
Member
 
Регистрация: 15.07.2016
Сообщений: 57
Бабло: $24350
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от Hector Посмотреть сообщение
А как ты замеры делаешь? Файл же тоже может храниться в оперативке при повторном запросе. Или нет?
Замеры делал через профайлер и просто обернув функцию microtime_float (данные одинаковые).
При повторном запросе ты имеешь в виду с диска?

Цитата:
Сообщение от imgreen Посмотреть сообщение
При первом чтении 11 мс? 11 мс это из дискового кеша возможно.
да 11 мс это из кеша который хранится в файле на диске
да при первом чтении в рамках запуска скрипта.
Goldswen вне форума  
Старый 04.06.2020, 00:06   #5
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,236
Бабло: $247846681
По умолчанию

У тебя из файлового кеша операционной системы он читается, который в озу. Создай новый файл и сделай замер.
imgreen вне форума  
Старый 04.06.2020, 00:11   #6
Goldswen
Member
 
Регистрация: 15.07.2016
Сообщений: 57
Бабло: $24350
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
У тебя из файлового кеша операционной системы он читается, который в озу. Создай новый файл и сделай замер.
Не думаю что в озу хранится то что записано на диске, я открываю файл через fopen и дальше декодирую json_decode.

Скорость файлового я привет как пример, меня больше интересует memcache, действительно ли у него такая скорость или с ним что-то не так?
Goldswen вне форума  
Старый 04.06.2020, 00:44   #7
Final Fantasy
private.
 
Аватар для Final Fantasy
 
Регистрация: 30.04.2008
Сообщений: 3,866
Бабло: $462940
По умолчанию

Goldswen, линукс ось кеширует все, что может, и твой файл уже при втором же запросе уже в оперативке будет, если оперативки достаточно

И вообще можешь не юзать мемкеш, можешь файлы/кеш складывать в /dev/shm - это дефолтный рамдиск в линкусах
Final Fantasy вне форума  
Старый 04.06.2020, 01:06   #8
Goldswen
Member
 
Регистрация: 15.07.2016
Сообщений: 57
Бабло: $24350
ТС -->
автор темы ТС По умолчанию

Final Fantasy, Огромное спасибо за инфу, не знал что такое есть
А можно как то кеш с MySql тоже в озу хранить? или оно тоже туда само подгружает?
Goldswen вне форума  
Старый 04.06.2020, 01:26   #9
Final Fantasy
private.
 
Аватар для Final Fantasy
 
Регистрация: 30.04.2008
Сообщений: 3,866
Бабло: $462940
По умолчанию

Goldswen, по mysql делай правильные индексы и если оперативки достаточно, то индексы все в оперативке будут, а если индексы в оперативке, то выборки будут быстрыми

мой my.cnf конфиг
у меня tmpdir заакомментированы поскольку mariadb их игнорирует, и что нужно сама в рам сует
конфиг под 128 гб оперативки + nvme и сервак только под бд используется
если у тебя сервак только под бд ставь 70-80% от рам на innodb_buffer_pool_size
если у тебя сервак не только под бд, ставь 35-50% от рам на innodb_buffer_pool_size, в зависимости от потребления памяти, главное что-бы mysql не крашнулся когда рама будет не хватать, иначе могут возникнуть проблемы при перезапуске из-за похерившихся таблиц

Цитата:
[mysqld]
datadir=/home/lib/mysql
socket=/home/lib/mysql/mysql.sock
symbolic-links=1

key_buffer_size = 16M
max_allowed_packet = 16M
table_open_cache = 256
sort_buffer_size = 256M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 256M
thread_cache_size = 8
query_cache_size= 16M

#innodb_use_native_aio = 0
innodb_file_per_table = 1

max_allowed_packet = 256M
max_connections = 8192
max_user_connections = 8192
wait_timeout = 15
interactive_timeout = 12
thread_concurrency = 0

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

log_error = /var/log/mariadb/error.log

max_heap_table_size = 512M
tmp_table_size = 512M
#max_statement_time = 10

#tmpdir = /dev/shm
#innodb_tmpdir = /dev/shm
innodb_temp_data_file_path=ibtmp1:64M:autoextend

innodb_sort_buffer_size = 128M
innodb_buffer_pool_size = 96G
innodb_log_file_size = 256M
innodb_log_buffer_size = 4M
innodb_buffer_pool_instances = 16
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
sync_binlog = 0

innodb_thread_concurrency = 0
innodb_read_io_threads = 128
innodb_write_io_threads = 128

skip-external-locking
skip-name-resolve
low-priority-updates
memlock

open_files_limit=50000

[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
Final Fantasy вне форума  
Старый 04.06.2020, 05:30   #10
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,873
Бабло: $1862475
По умолчанию

у пхп свой opcache, там твой файл живёт теперь
у мускуля свои кэши
memcache юзай, чтобы в БД не лазать лишний раз (когда count(*) делаешь, например)
веломан вне форума