Терракотовая производительность и подсказки

Создание df (Dataframe):

1 - Импортирована библиотека pandas в консоль (в моем случае Jupyter) с помощью следующей команды. [1111 ]

import pandas as pd

2 - Теперь выполните следующую команду для создания df (фрейм данных).

df = pd.DataFrame({'a': ['2018-12-11 15:26:07',
                         '2018-12-11 15:26:31']})

Теперь перейдем к требованию OP получить поле секунд 00:

df['a']=df['a'].str.replace(':[0-9]+ 

Когда мы печатаем df сейчас, вывод будет следующим.

     a
0   2018-12-11 15:26:00
1   2018-12-11 15:26:00
, ':00') df

Когда мы печатаем df сейчас, вывод будет следующим.

     a
0   2018-12-11 15:26:00
1   2018-12-11 15:26:00
9
задан mainstringargs 27 April 2009 в 16:39
поделиться

2 ответа

Может оказаться, что пакетирование нескольких изменений в одной области блокировки будет работать лучше. Каждый синхронизированный блок / метод формирует транзакцию записи (при условии, что вы используете блокировку записи), которая должна быть отправлена ​​на сервер (и, возможно, обратно на другие узлы). Изменяя группу полей, возможно, для группы объектов под одной блокировкой, вы уменьшаете накладные расходы на создание транзакции. По крайней мере, с чем поиграть.

Разделение также является ключевым способом повышения производительности. Изменения нужно отправлять только тем узлам, которые фактически используют объект. Поэтому, если вы можете разделить, какие узлы обычно касаются определенных объектов, это уменьшает количество изменений, которые должны быть отправлены по кластеру, что повышает производительность.

Предложения unnutz по использованию CHM или CSM являются хорошими. CHM обеспечивает больший параллелизм (поскольку каждый внутренний сегмент может быть заблокирован и использоваться одновременно) - обязательно поэкспериментируйте с большим количеством сегментов. У CSM фактически есть одна блокировка на запись, так что у таблицы N фактически есть N разделов. Это может значительно снизить конкуренцию за блокировку (за счет управления большим количеством объектов внутренней блокировки). Изменения, которые появятся в ближайшее время в CSM, значительно снизят стоимость блокировки MGMT.

Как правило, мы находим хорошую стратегию:

  1. Создайте тест производительности (должен быть многопоточным и многоузловым, похожим на ваше приложение (или ваше фактическое приложение!)
  2. Настройте объекты - посмотрите на свой кластеризованный граф объектов в консоли разработчика, чтобы найти объекты, которые вообще не нужно кластеризовать - иногда это происходит случайно (удалить или обрезать кластер с помощью переходного поля) Иногда вы можете кластеризовать дату, где будет делать long. Небольшое изменение, но это один объект для каждой записи карты, и это может иметь значение.
  3. Настройте блокировки - используйте профилировщик блокировок в консоли разработчика, чтобы найти горячие блокировки или блокировки, которые слишком узкие или слишком широкие. Регистратор кластерной статистики также может помочь в определении размера транзакции.
  4. Настройте сборщик мусора и настройте сборку мусора в JVM, а затем настройте распределенный сборщик терракоты, включив изменение частоты молодого поколения.
  5. Сервер Tune TC - много очень подробных настроек, которые можно сделать здесь, но обычно не стоит, пока не настроены все вышеперечисленные.

Не стесняйтесь спрашивать также на форумах Terracotta - все о машиностроении, полевой инженерии, наблюдении за продуктом mgmt те и отвечают там.

  • Настройка замков - используйте профилировщик замков в консоли разработчика, чтобы найти горячие замки или замки, которые слишком узкие или слишком широкие. Регистратор кластерной статистики также может помочь в определении размера транзакции.
  • Настройте сборщик мусора и настройте сборку мусора в JVM, а затем настройте распределенный сборщик терракоты, включив изменение частоты молодого поколения.
  • Сервер Tune TC - много очень подробных настроек, которые можно сделать здесь, но обычно не стоит, пока не настроены все вышеперечисленные.
  • Не стесняйтесь спрашивать также на форумах Terracotta - все о машиностроении, полевой инженерии, наблюдении за продуктом mgmt те и отвечают там.

  • Настройка замков - используйте профилировщик замков в консоли разработчика, чтобы найти горячие замки или замки, которые слишком узкие или слишком широкие. Регистратор кластерной статистики также может помочь в определении размера транзакции.
  • Настройте сборщик мусора и настройте сборку мусора в JVM, а затем настройте распределенный сборщик терракоты, включив изменение частоты молодого поколения.
  • Сервер Tune TC - много очень подробных настроек, которые можно сделать здесь, но обычно не стоит, пока не настроены все вышеперечисленные.
  • Не стесняйтесь спрашивать также на форумах Terracotta - все о машиностроении, полевой инженерии, наблюдении за продуктом mgmt те и отвечают там.

    7
    ответ дан 4 December 2019 в 21:12
    поделиться

    Firstly, I would suggest you to raise this question on their forums too.

    Secondly, actually, performance of your application clustered over the Terracotta willl depend on number of write transactions that happen. So you could consider using ConcurrentStringMap (if your keys are Strings) or ConcurrentHashMap. Note that CSM is much more better than CHM from point of performance.

    After all, POJOs are loaded lazily. That means each property is loaded on-demand.

    Hope that helps.

    Cheers

    3
    ответ дан 4 December 2019 в 21:12
    поделиться
    Другие вопросы по тегам:

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