Search code examples
jdbcjmetertime-seriesperformance-testingdatabase-performance

Invalid table ID error when too many JDBC threads inserting data to TDengine


I am working on a project to use many threads to simulate intensive data writing to time-series database. Here it's TDengine.

When I bump the threads number to 1000 for writing data to TDengine server, the errors return as below: java.sql.SQLException: TDengine ERROR (80000600): Invalid table ID

And some errors return at the same time: java.sql.SQLException: TDengine ERROR (80000014): Database not ready

Total Requests of Writing is 100,000,000, Failed Requests is 19748

log below: 04/21 10:44:21.663735 00042155 DND msg:0x7fd7c8001140, app:0xf36233 type:create-table is reput into mwrite queue:0x138eaa0, retry times:0 04/21 10:44:21.664098 00042352 TDB ERROR vgId:3 failed to get table to insert data, uid 844438318559607 tid 798 04/21 10:44:21.664140 00042352 TDB ERROR vgId:3 failed to insert data since Invalid table ID

Seems something wrong in the server side. May I know if someone can help out?

Thanks,


Solution

    1. From JMeter perspective I can only recommend:

      • following JMeter Best Practices
      • saving request/response data for the time frame of investigating the issue so you will have the confidence that JMeter doesn't fail to properly construct the request
      • make sure that there is enough headroom for JMeter to operate in terms of free CPU/RAM/etc.
    2. From TDengine perspective only the above point about resources monitoring applies, make sure that there is on excessive CPU, RAM, Network or Disk IO usage. It can be done using i.e. JMeter PerfMon Plugin

      Apart from checking the logs for suspicious entries you can also check the cluster status using commands like show dnodes; show mnode; and show vgroups and look for the open issues