использованием вероятностных методов возникает проблема с чтением recv_ring, что приводит к ошибке Lock wait timeout.
【Описание дефекта】: Укажите подробное описание проявления дефекта
1. Информация о дефекте
【Дефект принадлежит версии ОС】(например, openEuler-22.03-LTS, используйте команду "cat /etc/os-release")
openeulerversion=openEuler-22.03-LTS-SP4
compiletime=2024-12-04-12-44-35
gccversion=10.3.1-66.oe2203sp4
kernelversion=5.10.0-239.0.0.138.oe2203sp4
openjdkversion=1.8.0.432.b06-0.oe2203sp4
【Версия ядра】(например, kernel-5.10.0-60.138.0.165, используйте команду "uname -r")
5.10.0-239.0.0.138.oe2203sp4.aarch64
【Программа и её версия, к которой относится дефект】(например, kernel-5.10.0-60.138.0.165, используйте команду "rpm -q имя_пакета")
gazelle-1.0.2-80.oe2203sp3.aarch64
dpdk-21.11-79.oe2203sp4.aarch64
【Информация об окружении】
ARM физическая машина
【Шаги воспроизведения проблемы】: Опишите конкретные шаги для воспроизведения проблемы
Настройка среды gauss и включение следующих параметров в postgresql.conf
listen_addresses = '*'
enable_gazelle_performance_mode = on
max_connections = 4096
allow_concurrent_tuple_update = true
audit_enabled = off
cstore_buffers = 16MB
enable_alarm = off
enable_codegen = false
enable_data_replicate = off
full_page_writes = off
max_files_per_process = 100000
max_prepared_transactions = 2048
shared_buffers = 350GB
use_workload_manager = off
wal_buffers = 1GB
work_mem = 1MB
transaction_isolation = 'read committed'
default_transaction_isolation = 'read committed'
synchronous_commit = on
fsync = on
maintenance_work_mem = 2GB
vacuum_cost_limit = 10000
autovacuum = on
autovacuum_mode = vacuum
autovacuum_max_workers = 20
autovacuum_naptime = 5s
autovacuum_vacuum_cost_delay = 10
update_lockwait_timeout = 20min
enable_mergejoin = off
enable_nestloop = off
enable_hashjoin = off
enable_bitmapscan = on
enable_material = off
wal_log_hints = off
log_duration = off
checkpoint_timeout = 15min
``````ini
autovacuum_vacuum_scale_factor = 0.1
autovacuum_analyze_scale_factor = 0.02
enable_save_datachanged_timestamp = false
enable_double_write = on
enable_incremental_checkpoint = on
enable_opfusion = on
instr_unique_sql_count = 0
advance_xlog_file_num = 100
numa_distribute_mode = 'all'
track_activities = off
enable_instr_track_wait = off
enable_instr_rt_percentile = off
track_sql_count = off
enable_instr_cpu_timer = off
plog_merge_age = 0
session_timeout = 0
enable_instance_metric_persistent = off
enable_logical_io_statistics = off
enable_page_lsn_check = off
enable_user_metric_persistent = off
enable_xlog_prune = off
enable_resource_track = off
instr_unique_sql_count = 0
remote_read_mode = non_authentication
wal_level = archive
hot_standby = off
hot_standby_feedback = off
client_min_messages = ERROR
log_min_messages = FATAL
enable_asp = off
enable_bbox_dump = off
bgwriter_flush_after = 32
wal_keep_segments = 1025
enable_bitmapscan = off
enable_seqscan = off
enable_thread_pool = on
# xlog
xloginsert_locks = 16
# dfx
enable_stmt_track = false
# bgwriter_thread_num = 1
bgwriter_delay = 5s
walwriter_sleep_threshold = 50000
walwriter_cpu_bind = 0
# thread_pool_attr = '464,4,(cpubind:1-20,24-44,48-68,72-92)'
thread_pool_attr = '464,4,(cpubind:1-21,24-45,48-69,72-93)'
pagewriter_sleep = 10ms
incremental_checkpoint_timeout = 120s
# max_io_capacity = 2GB
wal_file_init_num = 30
checkpoint_segments = 100000
gs_clean_timeout = 0
track_counts = on
undo_zone_count = 0
pagewriter_thread_num = 2
max_redo_log_size = 400GB
max_io_capacity = 1GB
enable_cachedplan_mgr = off
enable_beta_opfusion = on
enable_partition_opfusion = on
sql_beta_feature = PARTITION_OPFUSION
light_comm = on
enable_indexscan_optimization = on
time_record_level = 1
# --------------------------------------------------------------
wal_file_init_num = 30000
```Тип документа для перевода: generic
Язык исходного текста: китайский
Язык финального текста должен быть: русский
---
### Оригинальный текст:
这是一个示例文档,用于演示如何翻译包含多种语言的文本。以下是一些需要翻译的内容:
下面是一个简单的代码示例:
def hello_world():
print("Hello World!")
这里有一些数学表达式:
如果出现以下错误,请检查您的输入是否正确:
以上内容展示了如何处理多语言文本,并确保翻译后的文本保持原有的格式和结构。
### Переведённый текст:
Это примерный документ, предназначенный для демонстрации того, как переводятся тексты, содержащие различные языки. Ниже приведены некоторые строки, требующие перевода:
Ниже представлен простой пример кода:
def hello_world():
print("Hello World!")
Вот несколько математических выражений:
Если возникли следующие ошибки, проверьте правильность вашего ввода:
Вышеуказанный материал показывает, как обрабатывать тексты на различных языках и обеспечивать сохранение исходной формы и структуры после перевода.
---```sh
# В gauss пользователе запустите gauss сервер
LD_PRELOAD=liblstack.so GAZELLE_BIND_PROCNAME=gaussdb gaussdb -D /data_gauss_001/software/openGauss/data/single_node
Конфигурационный файл представлен ниже
dpdk_args = ["--socket-mem", "4096,4096,4096,4096", "--huge-dir", "/mnt/hugepages-lstack", "--proc-type", "primary"]
stack_thread_mode = "run-to-wakeup"
# ltran режим требует добавления "--map-perfect" и "--legacy-mem" в dpdk_args
use_ltran = 0
kni_switch = 0
flow_bifurcation = 0
low_power_mode = 0
# необходимое количество mbuf = tcp_conn_count * mbuf_count_per_conn
tcp_conn_count = 1500
mbuf_count_per_conn = 1072
# размер отправочной очереди, по умолчанию 32, максимум 2048
send_ring_size = 32
# размер приемной очереди, по умолчанию 128, максимум 2048
recv_ring_size = 128
# параметры протокольной стековой нити на каждом цикле
read_connect_number = 4
rpc_number = 4
nic_read_number = 128
nic_rxqueue_size = 4096
nic_txqueue_size = 2048
```# Каждый ядро CPU запускает поток протокола стека.
num_cpus="22,23,46,47,70,71,94,95"
# Поток рабочего приложения привязывается к NUMA в epoll/poll.
app_bind_numa=0
# Аффинность основного потока приложения устанавливается DPDK.
main_thread_affinity=0
host_addr="124.88.86.177"
mask_addr="255.255.0.0"
gateway_addr="124.88.0.1"
devices="24:a5:2c:d1:f0:91"
# 0: использовать правило RSS
# 1: использовать правило кортежей TCP для указания пакета в очередь NIC
tuple_filter=0
# tuple_filter=1, ниже указаны действительные параметры конфигурации
num_process=1
process_numa="0,1"
process_idx=0
# tuple_filter=0, ниже указаны действительные параметры конфигурации
listen_shadow=1
# режим VLAN; поддерживаются значения от -1 до 4094, -1 — выключен
nic_vlan_mode=-1
# режим объединения; поддерживаются режимы объединения 4 и 6, -1 — выключен
```bond_mode=-1
# MAC-адреса слейвов объединения, разделённые точкой с запятой, поддерживаются два MAC-адреса
# bond_slave_mac="aa:bb:cc:dd:ee:ff;gg:hh:ii:jj:kk:ll"
# максимальное количество пулов памяти RPC
rpc_msg_max=4096
app_exclude_cpus="0"```
2. Запустите TPCC тест на другой машине
./runBenchmark.sh ./props.pg
cat props.pg
db=postgres
driver=org.postgresql.Driver
conn=jdbc:postgresql://124.88.86.177:5432/tpcc1000?prepareThreshold=1&batchMode=on&fetchsize=10&loggerLevel=OFF&preparedStatementCacheSizeMiB=0&preparedStatementCacheQueries=0
user=tpcc_bot
password=xxxx
warehouses=1000
loadWorkers=128
terminals=704
// Чтобы запустить определенное количество транзакций на терминал — установите runTxnsPerTerminal=60
runTxnsPerTerminal=0
// Чтобы запустить тест на определенное время — runTxnsPerTerminal должно быть равно нулю
runMins=60
// Общее количество транзакций в минуту
limitTxnsPerMin=0
// Установите значение true для совместимости с версией 4.x, установите значение false для равномерного использования всего конфигурированного базового данных
terminalWarehouseFixed=false
// Следующие пять значений должны суммировать до 100
// По умолчанию проценты 45, 43, 4, 4 и 4 соответствуют спецификациям TPC-C
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
// Имя директории для создания для сбора подробных данных результатов
// Отключите это, чтобы подавить вывод
//resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
//osCollectorScript=./misc/os_collector_linux.py
//osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
//osCollectorDevices=net_eth0 blk_sda
После некоторого времени выполнения tpcc теста возникают следующие ошибки: часть соединений остаётся активной с recv_ring равным 1 и нечитаемым.
10:39:48,336 [Thread-411] ОШБИКА jTPCCTData: [124. 88. 105. 247:57346/124. 88. 86. 177:5432] ОШБИКА: Время ожидания блокировки истекло: поток 281029593413536 на узле sgnode ждёт блокировки ExclusivLock на кортеже (11294,25) отношения (24584, ведро 0) базы данных 16388 после 1200000. 128 мс.
Подробнее: заблокировано захватывающей блокировкой потока 281051001534368, заявка <<команда строки не активирована>>, тип блокировки AccessExclusiveLock.org.postgresql.util.PSQLException: [124.88.105.247:57346/124.88.86.177:5432] ОШИБКА: Время ожидания блокировки истекло: поток 281029593413536 на узле sgnode ждет блокировки ExclusivLock на кортеже (11294,25) отношения (24584, ведро 0) базы данных 16388 после 1200000.128 мс
Подробнее: заблокировано захватывающей блокировкой потока 281051001534368, заявка <<команда строки не активирована>>, тип блокировки AccessExclusiveLock.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2901)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2630)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:362)
at org.postgresql.jdbc.PgStatement.runQueryExecutor(PgStatement.java:562)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:539)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:397)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:126)
at jTPCCTData.executePayment(jTPCCTData.java:766)
at jTPCCTData.execute(jTPCCTData.java:99)
at jTPCCTerminal.executeTransactions(jTPCCTerminal.java:160)
at jTPCCTerminal.run(jTPCCTerminal.java:88)
at java.lang.Thread.run(Thread.java:750)
[Expected Result], пожалуйста, опишите ожидаемый результат и влияние
Можно проводить тестирование нормально
Вход Перед тем как оставить комментарий