Please remove the Trading Post Cooldown
is this the “Error: Cannot Sell” error? i get this often, even if it’s my first sale of the night.
It’s only 15 seconds, not long enough to make you impatient
I assume it’s a safeguard to prevent people from spamming the servers and overloading it with requests.
[Currently Inactive, Playing BF4]
Magic find works. http://sinasdf.imgur.com/
It’s only 15 seconds, not long enough to make you impatient
Makes me impatient, that’s for sure.
When you have a bunch of things to sell, it can take 10 minutes or more to wait for the cooldowns. I’ve been trying to think of ways to fill the time productively, but if you just sit there and wait it sucks.
It’s only 15 seconds, not long enough to make you impatient
Makes me impatient, that’s for sure.
When you have a bunch of things to sell, it can take 10 minutes or more to wait for the cooldowns. I’ve been trying to think of ways to fill the time productively, but if you just sit there and wait it sucks.
I totally agree here. It is frustrating to have to wait so much and it really really gets in the way when I have a lot of items to put up. For whatever reason they are doing this, either to prevent spamming items or to reduce server load, there should be other ways to accomplish this. Right now it gets in the way of legitimate users way. too. often.
iheartgw2.com
twitter.com/iheartgw2
For whatever reason they are doing this, either to prevent spamming items or to reduce server load, there should be other ways to accomplish this.
Like what, for instance?
After doing some network programming myself, my guess is that it’s for the latter, honestly – which can happen even with enough “legitimate users.” I remember the BLTC frequently being down early after release – I’d prefer a 15sec cooldown over a day of maintenance.
Here’s an old thread on this topic, with an ANet response
https://forum-en.gw2archive.eu/forum/game/bltc/Trading-Post-6-Stack-Sell-Cap/first#post791224
Like what, for instance?
For instance, if the sell interface for your inventory allowed you to choose prices for the individual items without leaving the inventory list, then check a box next to each you want to sell and send them all to the server in a batch.
@SharedProphet: I don’t know the details of ANet’s implementation, and I don’t know where their bottleneck actually is. Still, that’s a good crack at a suggestion (seriously, being complacent with design is one of my biggest pet peeves, and I’m glad to hear a response with some critical thinking!), but I have doubts that particular solution would alleviate the amount of traffic that they receive. Your suggestion is a more user-friendly interface for people that want to trade large amounts of items at once, IMO – but I don’t think that does anything for the concerns that the cooldown addresses.
You need to think more about the backend. Personally, I’m thinking about two things: the network traffic, and handling the database requests once received from the network. (This is gonna be the really, really short version of my crack at an explanation.)
On the network side, message throttling has to happen somewhere. There’s overhead involved in sending a packet, receiving a packet, reading its header, and parsing the actual contents of its message. Lag is usually the result of a client or server not being able to process those as fast as they come in – DDOS attacks do this exact thing intentionally, but it can still happen if either server/client doesn’t throttle their outgoing messages. Both packet size and frequency affect the amount of lag, and batching like you said might actually help: instead of having 40 different packets, maybe their packet size can fit multiple requests in to distribute that over, say, 4 packets. (Maybe. I don’t know, this is super implementation-specific.)
On the database side (and I’m leaning towards the notion that this is where the bottleneck is), I’d imagine that each atomic thing you can do (buy order, sell order, and cancellations of either) is a transaction – or a series of statements that can’t be reduced any further. My knowledge of SQL is a little rusty, but each of those requests would boil down to statements like “INSERT INTO sell_listings VALUES (listing_id, player_id, item_id, gold_amount); UPDATE player_data SET gold_amount * -1 WHERE player_id=pid character_id=cid” – which each have their own overhead. I’d imagine that if you batched the requests together like you said, you might help the network side of things, but it does nothing for the database side of things. The amount of requests to fulfill is still the same.
And as to why they throttle sell orders but not buy orders – they probably have metrics that tell them how many requests of each kind they get and how frequently – and due to how convenient it is to sell things from anywhere, I’m guessing sell orders are much higher. (I mean, how often do you buy something when you’re nowhere around to pick it up compared to how often you sell that Vial of Powerful Blood that just dropped?)
I might be a little off-base, but that’s the best I can do with my knowledge without actually working at ANet!
You can insert multiple rows with a single insert statement: http://stackoverflow.com/questions/452859/inserting-multiple-rows-in-a-single-sql-query
Ah! Wasn’t aware. So that might alleviate things a bit – it depends on if the bottleneck is in the overhead of sending a single statement or in the actual lower-level execution of the statements. I don’t know – I’m not familiar with databases enough to really comment which one is more costly than the other (I’ve done some work, but nothing extensive – I’m more a graphics and rendering programmer for games).
Sending multiple requests to a database is pretty much always going to be slower than sending a single request. The database can optimize how it executes the requests only if it has them in a batch. A lot of database optimization, as far as I know, is just finding ways to combine statements so you send fewer requests.
On top of that, it’s pretty much guaranteed that sell requests are small enough that batching them would help with network traffic as well. I think they would have to be in the megabyte range for this not to be the case.
(edited by SharedProphet.9324)
Increasing the limit on stacks from 250 to some larger number goes a long way.
IMO either put a hard limit on how much you can trade on the TP or, if there is no hard limit, remove the “soft” barriers like having to click a million times or having to wait for TP cooldowns and let people just trade in the tens of thousands with one order.