What is the correct way to send a web3 token transaction on eth now?

Just tried to send a usdc transfer transaction on Eth and it resulted in a $17 gas fee (at a price of 324 gwei) 🙁
gas related stuff in the rawTransaction:
const gasPrice = parseInt(await web3.eth.getGasPrice()); let gasLimit = latestBlock && latestBlock.transactions.length ? Math.ceil(latestBlock.gasLimit / latestBlock.transactions.length) : 0; const gasestimate = await web3.eth.estimateGas({ from: fromAddress, to: tokenConfig.contractAddress, value: weiBN !== null ? Web3.utils.toHex(weiBN) : "0x0", data: Web3.utils.toHex(abi), nonce: nonce }); gas: Web3.utils.toHex(Web3.utils.toBN(gasestimate)), // amount of gas to process the transaction gasPrice: Web3.utils.toHex(Web3.utils.toBN(gasPrice)), gasLimit: Web3.utils.toHex(Web3.utils.toBN(gasLimit)), // upper limit to pay in gas
submitted by /u/MegaManSE
[link] [comments]