Hi,
I'm testing and reviewing this beautiful, traccar, as a tracker server for our vehicle LBS system. One requirement is to process packets from 10K devices and they would send their locations and status in every 10 seconds periodically.
In order to test my tracker server of traccar (version 4.5, built from source), I'm using a testing client tool I made in java and transmits packets through KHD protocol on port 5058. (similar to the "tools/test-performance.py", but I need every device having distinctive "uniqueId")
Please see below a piece of log during my testing with introduced above. (I modified the KHD protocol detail for my testing, so ignore the contents of packet.)
INFO: [053a22e2: khd < 211.168.49.207] HEX: 29298000281d1debc8130517012627023ac0060793885500350028fb000000ffff1d000000000000000000c60d29298000281d1debc8130517012631023ac3f107938c78002f001cfb000000ffff1d000000000000000000230d
In one read of the inbound buffer, the channel've gotten two protocol packets (starting with "2929" and ending with "0d" in two times). In the current implementations of traccar, one protocol packet is parsed, processed and stored in the database, and the other is thrown away without any handling. Is my understanding right? If yes....
Here, my problem in this situation is that the dropped part is a more recent information from the device than the handled. So, I believe we need some policies for the cases in the level of implementation of traccar. And my suggestions below....
- Getting only the most recent protocol packet and drop all other.
- Parsing and splitting all protocol packets from the streaming packet and processing all of them in the order of time and so on.
Just suggestions, however I'm wondering how thinking about this story.
Thanks for reading.
Your understanding is incorrect.
Packets only be dropped if you fail to register the unique Id that packet in device table upfront
Thank you for your corrections!
Hi,
I'm testing and reviewing this beautiful, traccar, as a tracker server for our vehicle LBS system. One requirement is to process packets from 10K devices and they would send their locations and status in every 10 seconds periodically.
In order to test my tracker server of traccar (version 4.5, built from source), I'm using a testing client tool I made in java and transmits packets through KHD protocol on port 5058. (similar to the "tools/test-performance.py", but I need every device having distinctive "uniqueId")
Please see below a piece of log during my testing with introduced above. (I modified the KHD protocol detail for my testing, so ignore the contents of packet.)
In one read of the inbound buffer, the channel've gotten two protocol packets (starting with "2929" and ending with "0d" in two times). In the current implementations of traccar, one protocol packet is parsed, processed and stored in the database, and the other is thrown away without any handling. Is my understanding right? If yes....
Here, my problem in this situation is that the dropped part is a more recent information from the device than the handled. So, I believe we need some policies for the cases in the level of implementation of traccar. And my suggestions below....
Just suggestions, however I'm wondering how thinking about this story.
Thanks for reading.