Ошибка YCSB с операцией сканирования на MySQL DB

Я пытаюсь запустить рабочую нагрузку только для сканирования с использованием клиента YCSB в базе данных MySQL (настройка 10 ГБ). Я использую следующую команду для запуска рабочей нагрузки

./bin/ycsb run jdbc -P workloads/workloademod -p db.driver=com.mysql.jd bc.Driver -p db.url=jdbc:mysql://localhost:3306/ycsbtest -p db.user= имя пользователя -p maxscanlength=100 -p recordcount=5000 -p operationcount=1000 -p maxexecutiontime=1800 > try_ycsb_emod

Но я получаю Java GC из-за исключения памяти, и рабочая нагрузка уничтожается следующим образом:

Loading workload...
Starting test.
Maximum execution time specified as: 1800 secs
Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap space
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3380)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)
        at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1928)
        at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3278)
        at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:462)
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2997)
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2245)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2638)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2530)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1907)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2030)
        at com.yahoo.ycsb.db.JdbcDBClient.scan(JdbcDBClient.java:348)
        at com.yahoo.ycsb.DBWrapper.scan(DBWrapper.java:107)
        at com.yahoo.ycsb.workloads.CoreWorkload.doTransactionScan(CoreWorkload.java:605)
        at com.yahoo.ycsb.workloads.CoreWorkload.doTransaction(CoreWorkload.java:491)
        at com.yahoo.ycsb.ClientThread.run(Client.java:233)
Could not wait until max specified time, TerminatorThread interrupted.

Я попытался увеличить размер кучи Java для клиента ycsb, выполнив "export YCSB_HEAP_SIZE=8000", чтобы сделать его 8G, но я получаю ту же ошибку.

Я проверил запрос mysql, который клиент ycsb отправляет на сервер mysql, и не вижу ссылки / следствия на показатель max_scan_length. Кроме того, выполнение этого запроса mysql с использованием клиента mysql вместо клиента ycsb работает нормально.

Я не уверен, что я могу сделать, чтобы исправить то же самое. Может ли кто-нибудь помочь мне здесь?

Спасибо рене

1 ответ

Это ошибка в реализации jdbc: https://github.com/brianfrankcooper/YCSB/issues/171

Другие вопросы по тегам