То, как выполниться, вставляет и обновляет вне транзакции в T-SQL

Из вашего описания и фрагмента журнала MongooseIM я считаю, что клиент запускает зашифрованное соединение с самого начала, поэтому «полученный XML» выглядит как мусор.

В XMPP исходное незашифрованное соединение обновляется до защищенного соединения с использованием STARTTLS . Это должно хорошо работать с ELB с переадресацией TCP и без завершения TLS, вы просто должны убедиться, что клиент не пытается использовать SSL / TLS с самого начала, а использует STARTTLS. Все популярные библиотеки XMPP должны иметь эту опцию, она является частью ядра XMPP.


[...] проще установить ELB TCP в TCP и шифровать его с помощью TLS, когда соединение открыто?

blockquote>

Точно.

Я в основном использую ELB, чтобы избежать необходимости обрабатывать SSL самостоятельно, и если я не могу его получить, было бы лучше напрямую выставить сервер mongoose в Интернет?

blockquote> [119 ] ELB нельзя использовать для завершения SSL для простого XMPP. Доступны следующие параметры:

  1. ELB пересылает обычный TCP, используется простой прослушиватель XMPP MongooseIM - Клиент открывает TCP-соединение, но обновляет его через STARTTLS, все экземпляры EC2 требуют предоставления сертификата.

  2. ELB настроен для завершения HTTPS, MongooseIM использует прослушиватель BOSH - BOSH является XMPP по HTTP, поэтому имеет некоторые издержки, но преимущество разгрузки SSL / TLS может стоить того, нет головной боли с сертификатами в экземплярах EC2 .

6
задан Cade Roux 29 January 2009 в 15:12
поделиться

3 ответа

Почему Вы обновляете таблицу аудита? Если Вы только делали, вводит Вас, мог бы помочь предотвратить повышения уровня блокировок. Также Вы исследовали трассировку мертвой блокировки для определения то, что точно Вы заводили в тупик?

Можно сделать, это путем включения трассировки отмечает 1204. Или выполнение SQL Profiler. Это даст Вам подробную информацию, которая сообщит, какая мертвая блокировка (блокировки, потоки, параллельны и т.д....).

Проверьте эту статью об Обнаружении и Окончании Мертвых блокировок.

Еще один способ сделать аудит должен разъединиться от деловой сделки completly путем отправки всех событий входа в очередь на уровне приложений, это минимизирует вход влияния, имеет на деловой сделке, но прочертовский очень большое для существующего приложения.

1
ответ дан 10 December 2019 в 00:45
поделиться

Поддержки TranactionScope Подавляют:

using (TransactionScope scope = new TransactionScope())
{

    // Transactional code...


    // Call a SQL stored procedure (but suppress the transaction)
    using (TransactionScope suppress = new TransactionScope(TransactionScopeOption.Suppress))
    {
        using (SqlConnection conn = new SqlConnection(...))
        {
            conn.Open();
            SqlCommand sqlCommand = conn.CreateCommand();
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "MyStoredProcedure";
            int rows = (int)sqlCommand.ExecuteScalar();
        }
    }

    scope.Complete();

}

Но я должен был бы подвергнуть сомнению, почему вход/аудит будет работать за пределами транзакции? Если транзакция откатывается, Вы будете все еще фиксировать контролировать/регистрировать записи, и это, вероятно, не, что Вы хотите.

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

5
ответ дан 10 December 2019 в 00:45
поделиться

Вы могли сохранить свои аудиты к табличной переменной (которые не затронуты транзакциями), и затем в конце Вашего SP (вне объема транзакции) вставляют строки в контрольную таблицу.

Однако это кажется, что Вы пытаетесь зафиксировать признаки, а не проблему. можно хотеть разыскать мертвые блокировки и зафиксировать их.

3
ответ дан 10 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: