I noticed the transaction’s gas limit is different than the value I set, does it mean the gas limit parameter is useless?
No, it is not useless.
However, notice that the transaction that you (the application) attempt to call is not the actual transaction that the relayer service executes - it has to be wrapped with a
relayCall transaction, and thus your call becomes an “inner transaction”
So the gas you specify when you make the call is used as a limit for that inner transaction.