Оптимальное количество соединений в пуле соединения

МГц и Mac являются общими префиксами фамилии всюду по США, и существуют другие. TextInfo. ToTitleCase не обрабатывает те случаи и не должен использоваться с этой целью. Вот то, как я делаю его:

    public static string ToTitleCase(string str)
    {
        string result = str;
        if (!string.IsNullOrEmpty(str))
        {
            var words = str.Split(' ');
            for (int index = 0; index < words.Length; index++)
            {
                var s = words[index];
                if (s.Length > 0)
                {
                    words[index] = s[0].ToString().ToUpper() + s.Substring(1);
                }
            }
            result = string.Join(" ", words);
        }
        return result;
    }
32
задан Silent Warrior 30 July 2009 в 17:25
поделиться

6 ответов

На этот вопрос есть очень простой ответ:

Количество подключений в пуле подключений должно быть равно количеству потоков выполнения, настроенных в WebLogic .

Обоснование очень простое: если количество подключений меньше количества потоков, возможно, некоторые из потоков ожидают подключения, что делает пул подключений узким местом. Таким образом, оно должно быть равно как минимум количеству исполняемых потоков (размеру пула потоков).

10
ответ дан 27 November 2019 в 20:05
поделиться

This is something that needs to be tested and determined on an individual basis - it's pretty much impossible to give an accurate answer for your circumstances without intimately being familiar with them.

1
ответ дан 27 November 2019 в 20:05
поделиться

You should profile the different expected workflows to find out. Ideally, your connection pool will also dynamically adjust the number of live connections based on recent usage, as it's pretty common for load to be a function of the current time of day in your target geographical area.

Start with a small number and try to reach a reasonable number of concurrent users, then crank it up. I think it's likely that you'll find that your connection pooling mechanism is not nearly as instrumental in your scalability as the rest of the software.

6
ответ дан 27 November 2019 в 20:05
поделиться

Вы действительно имели в виду 200 одновременных пользователей или только 200 зарегистрированных пользователей? В большинстве случаев пользователь браузера не сможет выполнять более 1 запроса страницы в секунду. Итак, 200 пользователей переводятся в 200 транзакций в секунду. Это довольно много для большинства приложений.

Тем не менее, в качестве примера давайте возьмем 200 транзакций в секунду. Скажем, каждый клиентский интерфейс (браузер) tx занимает 0,5 секунды, а из 0,5 секунды 0,25 тратятся в базе данных. Таким образом, вам потребуется 0,5 * 200 или 100 подключений в пуле WebLogic thead и 0,25 * 200 = 50 подключений в пуле подключений к БД.

В целях безопасности я бы установил максимальный размер пула потоков как минимум на 25%. больше, чем вы ожидаете, чтобы допустить скачки нагрузки. Минимальные значения могут составлять небольшую долю от максимума, но компромисс в том, что для некоторых пользователей это может занять больше времени, потому что необходимо будет создать новое соединение. В этом случае 50–100 подключений - это не так много для БД, так что это, вероятно, хорошее начальное число.

Обратите внимание, что для определения среднего времени отклика транзакции вместе со средним временем запроса к БД вам необходимо придется провести тест производительности, потому что ваше время при загрузке, вероятно, не будет таким, как у одного пользователя.

55
ответ дан 27 November 2019 в 20:05
поделиться

It's difficult to get hard data for this. It's also dependent on a number of factors you don't mention -

  • 200 concurrent users, but how much of their activity will generate database queries? 10 queries per page load? 1 query just on login? etc. etc.

  • Size of the queries and the db obviously. Some queries run in milliseconds, some in minutes.

You can monitor mysql to watch the current active queries with "show processlist". This could give you a better sense of how much activity is actually going on in the db under peak load.

1
ответ дан 27 November 2019 в 20:05
поделиться

Пул соединений должен иметь возможность увеличиваться и уменьшаться в зависимости от фактических потребностей. Запишите числа, необходимые для анализа в работающей системе, либо с помощью операторов регистрации, либо с помощью наблюдения JMX. Рассмотрите возможность настройки предупреждений для таких сценариев, как «обнаружен пик: более X новых записей должно быть выделено за Y секунд», «соединение было вне пула более X секунд», что позволит вам обратить внимание на проблемы с производительностью до того, как они появятся. реальные проблемы.

2
ответ дан 27 November 2019 в 20:05
поделиться
Другие вопросы по тегам:

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