• Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Ну. там много таблиц с MyISAM типом, т.к. оба типы были доступны для использования, и по умолчанию создаётся MyISAM. Так они и накопились. Просто это никто не трогал

    И да. Я пробовал.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Алексей Уколов, когда у сайта есть компонент/плагин, который при обращении создаёт файл с данными из базы, чтобы при следующем обращении их сунуть, а не лезть в базу/дёргать "компоненты/плагины" которые требуются для создание страницы, к которой обратились.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    ThunderCat, проблема, после рассмотрения, была клалифицированна в "слишком много обращений". Я думал что база настроено нормально. И когда она потихоньку начинает улетать в нирвану - собственно подумал что дело в количестве обращений - поднимается вопрос про кешер.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Эм. Сайты: wordpress, joomla 3 - собственно самими разработчиками должно всё стоять.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    ThunderCat, Спасибо за пояснение.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Алексей Уколов,
    Кешеирование результата выполнения кода: http://сайт.рф/index.php - чтобы 1 раз выполнился и более в базу не лез. При условии что у самого сайта нету кешеирования.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    ThunderCat,
    В базе начинается нирвана: Sending data SELECT .... Запросы разные. Может быть от Джумал - компонент К2 - выборка статей 50 шт. при таблице в 100000

    А может быть и вордпресса - 10 шт - постов. При таблице до 50 000.

    Собственно оно начинает длится 300 - 1300 секунд. Т.е. оно постепенно уползает в эту ситуацию. Собственно без нагрузки - всё быстро выполняется.

    Конфиг(если важно)

    #
    # These groups are read by MariaDB server.
    # Use it for options that only the server (but not clients) should see
    
    # this is read by the standalone daemon and embedded servers
    [server]
    
    # this is only for the mysqld standalone daemon
    [mysqld]
    
    #
    # * Basic Settings
    #
    
    user                    = mysql
    pid-file                = /run/mysqld/mysqld.pid
    basedir                 = /usr
    datadir                 = /var/lib/mysql
    tmpdir                  = /tmp
    lc-messages-dir         = /usr/share/mysql
    lc-messages             = en_US
    skip-external-locking
    
    # Broken reverse DNS slows down connections considerably and name resolve is
    # safe to skip if there are no "host by domain name" access grants
    #skip-name-resolve
    
    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    bind-address            = 127.0.0.1
    
    #
    # * Fine Tuning
    #
    
    #key_buffer_size        = 128M
    #max_allowed_packet     = 1G
    #thread_stack           = 192K
    #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            = 64
    
    #
    # * Logging and Replication
    #
    
    # Both location gets rotated by the cronjob.
    # Be aware that this log type is a performance killer.
    # Recommend only changing this at runtime for short testing periods if needed!
    #general_log_file       = /var/log/mysql/mysql.log
    #general_log            = 1
    
    # When running under systemd, error logging goes via stdout/stderr to journald
    # and when running legacy init error logging goes to syslog due to
    # /etc/mysql/conf.d/mariadb.conf.d/50-mysqld_safe.cnf
    # Enable this if you want to have error logging into a separate file
    #log_error = /var/log/mysql/error.log
    # Enable the slow query log to see queries with especially long duration
    #slow_query_log_file    = /var/log/mysql/mariadb-slow.log
    #long_query_time        = 10
    #log_slow_verbosity     = query_plan,explain
    #log-queries-not-using-indexes
    #min_examined_row_limit = 1000
    
    # 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
    
    #
    # * SSL/TLS
    #
    
    # For documentation, please read
    # https://mariadb.com/kb/en/securing-connections-for-client-and-server/
    #ssl-ca = /etc/mysql/cacert.pem
    #ssl-cert = /etc/mysql/server-cert.pem
    #ssl-key = /etc/mysql/server-key.pem
    
    #
    # * Character sets
    #
    
    # MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
    # utf8 4-byte character set. See also client.cnf
    character-set-server  = utf8mb4
    collation-server      = utf8mb4_general_ci
    
    #
    # * 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!
    # Most important is to give InnoDB 80 % of the system RAM for buffer use:
    # https://mariadb.com/kb/en/innodb-system-variables/#innodb_buffer_pool_size
    #innodb_buffer_pool_size = 8G
    
    # this is only for embedded server
    
    ############################################################## KOLDOBCTBO
    #max_allowed_packet     = 4M
    #max_connections        = 300
    #read_buffer_size = 1M
    #key_buffer_size        = 128M
    #sort_buffer_size = 2M
    ##read_rnd_buffer_size = 1M
    ##thread_stack		= 192K
    #query_cache_limit	= 4M
    #join_buffer_size = 8M;
    wait_timeout = 5
    interactive_timeout = 5
    
    [embedded]
    
    # This group is only read by MariaDB servers, not by MySQL.
    # If you use the same .cnf file for MySQL and MariaDB,
    # you can put MariaDB-only options here
    [mariadb]
    
    # This group is only read by MariaDB-10.5 servers.
    # If you use the same .cnf file for MariaDB of different versions,
    # use this group for options that older servers don't understand
    [mariadb-10.5]

  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    300 сайтов. База сжирает весь процессор. Вроде нормально оно настроено. -> подозрение на количество заходов. - идея об кешере.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Эм. Вопрос встал, когда началось посещение в сутки 24 тыс. уникальных ip, которыемогут заходить до 1000 раз в сутки(допустим боты, которых не пошлёшь - по разным причинам. Например: нет гарантии что это бот).

    Проблема в том, что яндекс, например, обнаглел. 8-10 IP gj 10 000 заходов в сутки, и 1 бот от него 40 000. на 300 сайтов. Собственно когда глянул: вообще никакое кешер не стоит. Вот и поднялся вопрос.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    редис ?
    Можно поподробнее?
    И какие альтернативы?(чтобы почитать)

    а в 7 ветке это уже излишне в принципе.

    эм. Там вроде сказано про 7.4 А у меня стоит несколько версий php, подключаются для разных сайтов
  • Nginx: limit_conn_zone и limit_req_zone работают?

    @47911 Автор вопроса
    Т.е. чтобы отдать "не существует страница" - ему не надо заходить в секцию PHP ? В то время, когда страница формируется из PHP??

    У меня по логам: 8 IP от яндекса. Которые за сутки заходят ~10 тыс. до 20 тыс. заходов + 1 бот особо умный - ~ 40 тыс. И это в добавок к начальному посту(146105 обращений).

    И база данных - сжирает весь ЦПУ. На сервере ~300 сайтов. И вот эта вся карусель(с кольчество заходов) началась едели 1.5 назад.

    Эти лимиты не позволяют отбить яндекс-боты + "Ещё некто" желание вешать сервер.
  • Nginx: limit_conn_zone и limit_req_zone работают?

    @47911 Автор вопроса
    ы@Lynn, а разве это имеет значение? Он по любому должен был отослать.

    К томуже он долбится в "несуществующие страницы"(преимущественно). Почему он получает ошибку об "не существовании страницы", когда его не должно было до этого допустить?

    В логах мелькает, из файлов: robots.txt
  • Nginx: limit_conn_zone и limit_req_zone работают?

    @47911 Автор вопроса
    Порядка 24250 заблокированно. В логах "limiting requests, excess: 2.680 by zone "one","

    Из логов пример блокировки:
    сайт.ru_error_log:2020/08/17 16:27:02 [error] 25574#25574: *1691784 limiting requests, excess: 2.680 by zone "one", client: 9.9.9.9, server: сайт.ru, request: "GET /ссылка.html HTTP/1.1", host: "сайт.ru"

    Сайт и IP заменил.

    Всего было на данный момент ~200 тыс. запросов. Почти за 2 дня. Из них как видно, заблокированно почти 25 тыс. А должно быть наоборот исходя из конфига блокировки по IP.

    Что касается 503 ошибки: она также, порядка 25 тыс. раз встречается в логах.(но это другая строка логов)
  • Как установить капчу (желательно 2 версии гугл) между сервером (сайтами) и пользователем?

    @47911 Автор вопроса
    так когда сайтов 200 штук, так получается долго, и как сделать для всего сервера - тоесть всех сайтов сразу , каким то модулем или чтото прописать в нгикс или куда ещё1 чтобы там проверялось на уровне сервера ?
  • Как установить капчу (желательно 2 версии гугл) между сервером (сайтами) и пользователем?

    @47911 Автор вопроса
    Эмиль 🔥, ну на форум столкнулся с такими мнениями, если можете помогите пожалуйста.
  • Какой компонент лучше использовать для большого каталога(4-5 000 000 шт.)?

    @47911 Автор вопроса
    Если я хочу:
    >>Рубрики: рубкрика1, рубкрика3,рубкрика10
    то при добавлении атрибута "Рубрики" будет не:
    >>Рубрики: рубкрика1, рубкрика3,рубкрика10
    а:
    >>Рубрики: рубкрика1, рубкрика2, рубкрика3, рубкрика4, рубкрика5, рубкрика6, рубкрика7, рубкрика8, рубкрика9, рубкрика10
    (по тому что я смог изучить - будет так). Мне нужно чтобы был "1 атрибут Рубрики" и у каждого было выделено по несколько рубрик, которые мне нужны. Т.е. добавил атрибут "Рубрики" - поставил 3 галочки - и при заходе с внешней стороны вижу:
    >>Рубрики: рубкрика1, рубкрика3,рубкрика10
  • Какой компонент лучше использовать для большого каталога(4-5 000 000 шт.)?

    @47911 Автор вопроса
    не подходит: атрибут типа "checkbox" не встроен, + судя по описанию - там не получится сделать:
    - Рубрики: рубкрика1, рубкрика3,рубкрика10
    Там будет: рубкрика1, рубкрика2, рубкрика3, рубкрика4, рубкрика5, рубкрика6, рубкрика7, рубкрика8, рубкрика9, рубкрика10

    Поправте если я не прав.