• Долгое открытие страницы каталога на Joomla 3 + K2/Zoo, Почему?

    @47911 Автор вопроса
    Индексы есть стандартные, разработчиками компонентов. Сервер: 94 гига, 32 Ядра по 3000 герц.
    Конфиг базы(MariaDB):
    #
    # 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]
    #open_files_limit = 16364000
    #
    # * 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     = 256M
    max_connections        = 1000
    #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 = 20
    interactive_timeout = 5
    innodb_buffer_pool_size = 48G
    innodb_log_file_size = 6G
    innodb_log_buffer_size = 32M
    innodb_file_per_table = ON
    innodb_flush_log_at_trx_commit = 0
    innodb_flush_method = O_DSYNC
    
    thread_cache_size = 720
    query_cache_size = 0
    query_cache_type = 0
    thread_handling=pool-of-threads
    #innodb_buffer_pool_instances=4
    #wait_timeout = 15
    #interactive_timeout = 15
    net_write_timeout = 5
    net_read_timeout = 5
    long_query_time = 3
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    general_log            = 0
    #general_log_file       = /var/log/mysql/mysql.log
    
    skip-name-resolve=1
    table_open_cache = 8192
    table_definition_cache = 20891
    performance_schema = ON
    innodb_buffer_pool_instances = 24
    join_buffer_size = 1G
    tmp_table_size = 512M
    max_heap_table_size = 512M
    
    key_buffer_size		= 64M
    sort_buffer_size = 32M
    read_rnd_buffer_size = 1M
    
    open_files_limit = 1636400
    
    [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]

  • Не получается получить сертификат letsencrypt для ~560 доменов. Проблема в cerbot или у https://acme-v02.api.letsencrypt.org/acme/new-nonce?

    @47911 Автор вопроса
    Andrey Barbolin, об этом я как-то забыл. Добавлял по 2-м доменам. Не подумал что через него можно 1 сертификат на n-ое количество доменов. Судя по документации - 100 шт.
  • Не получается получить сертификат letsencrypt для ~560 доменов. Проблема в cerbot или у https://acme-v02.api.letsencrypt.org/acme/new-nonce?

    @47911 Автор вопроса
    Andrey Barbolin,

    Ну. Так дело в том, что если посмотреть "по той ссылке" - там нету настроек для этого скрипта. Он сам "залпом" отсылает запрос. И 560 - это 280 уникальных доменов + они же с www.домен
  • Отправка формы в iframe(в самом iframe есть форма) - как?

    @47911 Автор вопроса
    Но если я попытаюсь не в "iframe" открыть ту страницу и зайдя как на "обычный сайт" - всё в полном порядке.

    В этом то и проблема.
  • Не получается получить сертификат letsencrypt для ~560 доменов. Проблема в cerbot или у https://acme-v02.api.letsencrypt.org/acme/new-nonce?

    @47911 Автор вопроса
    эм. А вы сюда https://certbot.eff.org/lets-encrypt/debianbuster-nginx заглядывали?
    Смысл: для всех сайтов сделать автоматом. "Поштучно" мне известно как, но для всех 560 сайтов - такое себе дело.
  • Отправка формы в iframe(в самом iframe есть форма) - как?

    @47911 Автор вопроса
    Итого: вместо "die('2');" я получаю перезагруженную страницу. Проблема: не дожидается ответа. Как заставить?

    Ещё раз: в iframe код из Joomla 3.9.21 - контакт(форма обратной связи).
  • Отправка формы в iframe(в самом iframe есть форма) - как?

    @47911 Автор вопроса
    Ок. Если вам так будет легче:

    php(отправка):
    public function submit(){
    die('1');//Это оно выводит
    //чёто-там
    die('2');//А это нет, т.к. слишком долго(более 0.1 сек.)
    //чёто-там
    }


    <div id="FOPMA" onclick="Hide(\'FOPMA_\', 0.1);">
    <iFrame src="" name="myIframe"></iFrame>
    </div>
    
    <form style="display:inherit;" target="myIframe" action="https://сайт.ru/" method="post">
        <input type="hidden" name="c" value="какие-то буквы" />
        <input type="submit" onclick="HAnuCATb()" value="Написать нам!">
    </form>


    function HAnuCATb(){
    try {
    		Show("FOPMA_", 1);
    } catch (err) {alert(err);}
    	}


    Содержимое iframe:
    <form id="contact-form" action="/index.php" method="post" class="form-validate form-horizontal well">
    <fieldset>
    <legend>Отправка сообщения</legend>
    <div class="control-group field-spacer">
    <div class="control-label">
    <span class="spacer"><span class="before"></span><span class="text"><label id="jform_spacer-lbl" class=""><strong class="red">*</strong> Обязательное поле</label></span><span class="after"></span></span> </div>
    <div class="controls"> </div>
    </div>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_contact_name-lbl" for="jform_contact_name" class="hasPopover required" title="" data-content="Введите ваше имя." data-original-title="Имя">
    Имя<span class="star">&nbsp;*</span></label>
    </div>
    <div class="controls"><input type="text" name="jform[contact_name]" id="jform_contact_name" value="" class="required" size="30" required="required" aria-required="true">
    </div>
    </div>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_contact_email-lbl" for="jform_contact_email" class="hasPopover required" title="" data-content="Введите ваш адрес электронной почты." data-original-title="E-mail">
    E-mail<span class="star">&nbsp;*</span></label>
    </div>
    <div class="controls"><input type="email" name="jform[contact_email]" class="validate-email required" id="jform_contact_email" value="" size="30" autocomplete="email" required="required" aria-required="true"></div>
    </div>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_contact_emailmsg-lbl" for="jform_contact_emailmsg" class="hasPopover required" title="" data-content="Введите тему сообщения." data-original-title="Тема">
    Тема<span class="star">&nbsp;*</span></label>
    </div>
    <div class="controls"><input type="text" name="jform[contact_subject]" id="jform_contact_emailmsg" value="" class="required" size="60" required="required" aria-required="true">
    </div>
    </div>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_contact_message-lbl" for="jform_contact_message" class="hasPopover required" title="" data-content="Введите текст сообщения." data-original-title="Сообщение">
    Сообщение<span class="star">&nbsp;*</span></label>
    </div>
    <div class="controls"><textarea name="jform[contact_message]" id="jform_contact_message" cols="50" rows="10" class="required" required="required" aria-required="true"></textarea></div>
    </div>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_contact_email_copy-lbl" for="jform_contact_email_copy" class="hasPopover" title="" data-content="Отправить копию сообщения на ваш адрес электронной почты." data-original-title="Отправить копию сообщения на ваш адрес">
    Отправить копию сообщения на ваш адрес</label>
    <span class="optional">(необязательно)</span>
    </div>
    <div class="controls"><input type="checkbox" name="jform[contact_email_copy]" id="jform_contact_email_copy" value="1"></div>
    </div>
    </fieldset>
    <fieldset>
    <div class="control-group">
    <div class="control-label">
    <label id="jform_captcha-lbl" for="jform_captcha" class="hasPopover required" title="" data-content="Пожалуйста, подтвердите, что вы не робот." data-original-title="CAPTCHA">
    CAPTCHA<span class="star">&nbsp;*</span></label>
    </div>
    <div class="controls"><div id="jform_captcha" class=" required g-recaptcha" data-theme="light" data-size="normal" data-tabindex="0" data-callback="" data-expired-callback="" data-error-callback="" data-recaptcha-widget-id="0"><</div></div>
    </div>
    </fieldset>
    <div class="control-group">
    <div class="controls">
    <button class="btn btn-primary validate" type="submit">Отправить</button>
    <input type="hidden" name="option" value="com_contact">
    <input type="hidden" name="task" value="contact.submit">
    <input type="hidden" name="return" value="">
    <input type="hidden" name="id" value="1:adminy">
    <input type="hidden" name="c" value="gdsfgfdsg53gfxdfgds"> <input type="hidden" name="56gfsdr4fesafdfvcxz" value="1"> </div>
    </div>
    </form>


    Полегчало? Свет пролило?
  • Отправка формы в iframe(в самом iframe есть форма) - как?

    @47911 Автор вопроса
    В этом то и дело: код не поможет. Если вернутся к "в начале функции пишу die - срабатывает. ", то: если я пишу эту команду ниже на несколько команд - мне не выводится "die..." а показывается страница ещё раз(типо перезагрузилась не дождавшись ответа - собственно отмена). Дело не в коде, а в самом теге iframe - он перезагружает страницу, а не дожидается ответа(но он может дождаться, если ответ быстро(относительно) приходит).

    Тут надо как-то настроить поведение iframe
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Вообщем. Проблема была в оперативе(одна из 16-и плашек глючила).

    https://debianforum.ru/index.php/topic,16064.0.htm...

    edac-util -v

    И немного подробнее: в IPMI есть логи, в которых подобная инфа вылезает, если что не так. Собственно - вынули и всё в порядке.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Притом возникло после обновления. Подозрение щас пало на ядро.
    Linux 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64
    До обновления небыло такой проблемы. Но статистики нагрузки нету до обновления. Т.е. щас 2 подозреваемых.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    ThunderCat,
    ну. Там 90% от вордпресовских - списки статей(т.е. блоги). + до 5 плагинов. В основном до 3.
  • Какой кешер для php лучше? Как выбрать?

    @47911 Автор вопроса
    Выделенный сервер.
  • Какой кешер для 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]