powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Server MySQL - альтернатива сокетам
19 сообщений из 19, страница 1 из 1
Server MySQL - альтернатива сокетам
    #38928919
proxykon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток.
Есть проект написанный мной. Базируется он на Debian7
Проект состоит из нескольких приложений написанных на C++.
В общем и целом приложения собирают инфу из просторов инета в MySQL.
Всё бы ничего но проект многопоточный, инфа должна быть актуальна каждый 10 сек.
Таким образом в этот промежуток времени количество подключений к БД достигает нескольких сотен.
Ну и собственно проблема в том что количество памяти используемой сервером зависит от количества подключений.
Возможно ли использовать иные способы общения приложения и БД находящихся на одном сервере, дабы сэкономить ОЗУ?
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38928947
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxykonколичество подключений к БД достигает нескольких сотен.
Ну и собственно проблема в том что количество памяти используемой сервером зависит от количества подключений.несколько сотен подключений съедают у вас всю память?
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38928955
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxykonВсё бы ничего но проект многопоточный, инфа должна быть актуальна каждый 10 сек.Ну как вариант написать свой велосипед, в который все эти потоки будут "эффективно"(с т.з. затрат памяти) сливать текущую информацию, а раз в 5 секунд сбрасывать накопленное в мускль. С которым у велосипеда будет всего одно соединение.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38928967
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пул потоков используете?
Еще можно попробовать сократить объемы ненужных буферов, выделяемых посессионно.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38928987
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxykon,
память то занимают не подключается как таковые, а северные сессии пользователей, которые на эти подключения работают.
так что как ни подключайся, все едино.

ты конечно можешь использовать меньше соединений, использовать пул и все такое, но в этом случае степень параллелизма при общении с бд будет неизбежно снижаться.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929010
proxykon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
нет сжирают не всё память, но существенную часть от свободной
512 оперативы, можно купить больше но это всё денежки.
Велик придумывать не буду.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929015
proxykon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

буферы оптимизировал, по поводу пула хз буду курить.
Если не в лом то поясните как правильно это сделать.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929042
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxykonmiksoft,

буферы оптимизировал, по поводу пула хз буду курить.
Если не в лом то поясните как правильно это сделать.В общих чертах - создаете отдельный кусок кода, который управляет созданием коннектов (менеджер). А остальные части кода вместо самостоятельного подключения обращаются за коннектами к этому менеджеру. Если у него есть свободные коннекты, то он выдает один из них. Если нет свободных, то создает новый и его выдает. Если нет свободных и нельзя создать новых, то либо отказывает, либо ставит на ожидание.
При освобождении - наоборот, остальные части кода сообщают об освобождении. Если коннект не нужен (количество выше порогового), то его закрывают, иначе коннект помечается как свободный.

В любом случае, будете использовать пул коннектов или нет, нужно пересматривать код, работающий с базой на предмет того, чтобы подключаться строго на то время, когда коннект нужен, и сразу отключаться, когда не нужен. А пул только поможет минимизировать время этих операций и, если ожидание будет реализовано, сократить пиковые количества подключений.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929073
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЕсли нет свободных и нельзя создать новых, то либо отказывает, либо ставит на ожидание.Увы, у ТСа жёсткий лимит актуальности в 10 секунд, а такая схема его, мягко говоря, не гарантирует.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929085
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoftЕсли нет свободных и нельзя создать новых, то либо отказывает, либо ставит на ожидание.Увы, у ТСа жёсткий лимит актуальности в 10 секунд, а такая схема его, мягко говоря, не гарантирует.Ну тут надо смотреть по месту. Ожидание тоже может регулироваться. Может ему и полсекунды будет хватать, чтобы сгладить самые остроконечные пики.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929092
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя в целом наиболее перспективным (хотя и наиболее трудоемким) мне видится подход с сокращением количества потоков.
Забыл, как оно правильно называется, по аналогии с nginx.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929283
proxykon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за комменты, всё по делу.
Если кто разбирается гляньте гонфиг(прикреплен).

Система стоит на OpenVZ, CPU 1ГГц, DDR 512.
OS Debian 7
Возможно стоит собрать систему на чем то другом?
Как то собирал RT ядро под сервер контры, возможно в этом направлении покопаться?
В перспективе не такой уж отдаленной потоков станет в разы больше.
Возможно нужно покурить в сторону оптимизации запросов.
У меня их не много:

SELECT
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
INSERT
DELETE WHERE

Самый частый SELECT и вниз в порядке убывания.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929286
proxykon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
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
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
#
# * Fine Tuning
#
key_buffer_size = 8M
max_allowed_packet = 16M
thread_stack = 192K


innodb_buffer_pool_size=64M

thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
max_connections = 100
table_cache = 128

#
# * Query Cache Configuration
#
query_cache_limit = 8M
query_cache_size = 8M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
# general_log_file = /var/log/mysql/mysql.log
# general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes


log_error = /var/log/mysql/mysql.err
log_warnings = 1

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow_queries.log
long_query_time = 0.05
log-queries-not-using-indexes = 1

#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet = 16M

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

[isamchk]
key_buffer = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929294
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxykonCPU 1ГГц, DDR 512.Что-то совсем негусто для сотен потоков.
proxykonВозможно нужно покурить в сторону оптимизации запросов.Возможно. Но это реально только при показе, как минимум, полного текста запроса, его плана и DDL всех задействованных таблиц.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929380
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>сокетов не хватает
>оптемизация
>хайололоад
>Система стоит на OpenVZ, CPU 1ГГц, DDR 512.

дасвиданья.

Хотя, постойте. времени у вас много поэтому покопайтесь с handlersocket.
Вроде бы там на основе UDP все можно сделать - это означает что там в принципе не существуют подключения в привычном виде.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929422
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашел подтверждений в документации. Так что я приврал : не существует способа задействовать udp в mysql
Видимо, я спутал с memcached, который по UPD все же может работать.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929439
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система стоит на OpenVZ, CPU 1ГГц, DDR 512.
OS Debian 7
Возможно стоит собрать систему на чем то другом?


Какая разница, если память есть MySQL ?


Как то собирал RT ядро под сервер контры, возможно в этом направлении покопаться?


Ядро тут уж точно ни при чём.



В перспективе не такой уж отдаленной потоков станет в разы больше.
Возможно нужно покурить в сторону оптимизации запросов.


В эту сторону всегда надо смотреть, но память оно тебе съэкономить не даст особенно сильно.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929447
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindНе нашел подтверждений в документации. Так что я приврал : не существует способа задействовать udp в mysql
Видимо, я спутал с memcached, который по UPD все же может работать.Мне тоже поминится, что что-то такое было. В доке нашел только упоминание InnoDB Handler API Layer. А вот как к нему подключиться - не нашел. А сайт innodb.com (на который ведет много ссылок из поиска) уничтожен с редиректом на mysql.com.
...
Рейтинг: 0 / 0
Server MySQL - альтернатива сокетам
    #38929624
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft В доке нашел только упоминание InnoDB Handler API Layer. А вот как к нему подключиться - не нашел. А сайт innodb.com (на который ведет много ссылок из поиска) уничтожен с редиректом на mysql.com.
Ну тут понятно что. Самостоятельный продукт Innodb - это ведь библиотека. Там нет программы-демона.
Имелся ввиду набор элементарных библиотечных вызовов библиотеки , которые mysql вызывает.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Server MySQL - альтернатива сокетам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]