[solved] worldserver get killed after "Loading SpellInfo store..." on aws

Is there anyone try to run TrinityCore on aws? I’m actually doing this, almost done, I think.
But, ah, something most important is wrong.

I compiled core 6.x on CentOS 7.2, then copied the server dir to EC2 which is running redhat 7.2.
The bnetserver works fine, I can log into the realm screen.

Problem is, I can’t get the worldserver started, it always get killed after “Loading SpellInfo store…”
I tried database on RDS and EC2 itself, same thing.

Anyone knows what is going on here?

[FONT=‘Courier New’]Using configuration file /home/dot/6tcinit/etc/worldserver.conf.
Using SSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 (library: OpenSSL 1.0.1e-fips 11 Feb 2013)
Using Boost version: 1.61.0
Updating Auth database…
>> Auth database is up-to-date! Containing 20 new and 56 archived updates.
Updating Character database…
>> Character database is up-to-date! Containing 16 new and 42 archived updates.
Updating World database…
>> World database is up-to-date! Containing 212 new and 1123 archived updates.
Updating Hotfixes database…
>> Hotfixes database is up-to-date! Containing 25 new and 61 archived updates.
Realm running as realm ID 1
Using World DB: TDB 6.04
Using enUS DBC Locale
Missing name MonsterSight in config file /home/dot/6tcinit/etc/worldserver.conf, add “MonsterSight = 50.000000” to this file
Missing name GuarderSight in config file /home/dot/6tcinit/etc/worldserver.conf, add “GuarderSight = 50.000000” to this file
Will clear logs table of entries older than 1209600 seconds every 10 minutes.
Using DataDir /home/dot/6tcinit/data/
WORLD: MMap data directory is: /home/dot/6tcinit/data/mmaps
VMap support included. LineOfSight: 1, getHeight: 1, indoorCheck: 1
VMap data directory is: /home/dot/6tcinit/data/vmaps
Missing name Guild.SaveInterval in config file /home/dot/6tcinit/etc/worldserver.conf, add “Guild.SaveInterval = 15” to this file
Missing name Guild.UndeletableLevel in config file /home/dot/6tcinit/etc/worldserver.conf, add “Guild.UndeletableLevel = 4” to this file
Loading Trinity strings…
>> Loaded 1044 trinity strings in 4 ms
Initialize data stores…
>> Initialized 200 DB2 data stores in 7455 ms
>> Initialized 24 GameTables in 33 ms
Loading SpellInfo store…

Out of memory: kill process

mount a swap fix this, stupid I am.

I run the DB and worldserver (process’) on separate servers. Always have and always will.

My performance has almost doubled.

Just some thoughts :slight_smile:

I know this topic is a little aged but I thought I would throw in my two cents as well since I have succeeded in setting up a server on AWS. Here are a few tips for anyone who wants to give it a go (btw - everything I have done so far is on the 3.3.5 branch):

As others have stated, you can’t just stand up a micro EC2 instance on its own. There just isn’t enough RAM by default on those instances. Two options that have been mentioned in this thread already are: mounting a swap drive and separating the DB from the world server (i.e. running on two servers).

  1. Extra swap might be fine but that solution pretty much guarantees poor performance since disks are much slower than RAM. Fine if you are just testing a few things out but not great for a long term solution.

  2. If you are planning to run it short-term (i.e. less than a year), then you can run the server within the AWS free tier by setting up the DB on a separate EC2 instance form the world server. After your account is active for a year you get bumped out of the free tier and Amazon will start charging you. Note, I have not tried this option myself - just guessing that’s what CDawg did to get around the memory issue on a single instance.

Although there are advantages to separating the two (cost being one of them), the world server process actually seems to use much more resources than the MySQL database, so you will still end up choking your world server. I have found the best performing solution for the money (on AWS) so far is to run an EC2 small instance. In this scenario MySQL typically uses about about 11% of the 2GB of RAM and the world process uses about 66%. The auth process is negligible. Unfortunately EC2 small is not available in the free tier, but if you get a reserved instance, the cost works out to just over $12 / month… which isn’t horrible if you are splitting the cost with some other buddies who feel up to messing with a trinitycore server.

For those who are less familiar with AWS, here are a couple of other tips:

[ul][li]Get familiar with and use the AWS security groups to limit which IP ranges can access it. This is a good way to 1) make sure you don’t have random hackers attempting to access your server; and 2) it keeps it “private” such nobody will stumble across it since they can’t access the ports. If you access it from an IP address that is dynamic, you can usually look up your ISP’s network range and use that instead of a single IP address.[/li]
[li]Get familiar with the cron, AWS CLI, S3, and mysqldump, and use the combo to push database backups into a private S3 bucket. The cost will be very small (my list bill was $0.01 for the month), and if you set up your S3 bucket to keep previous versions it will give you a helpful and extremely cheap daily backup.[/li]
[li]The best AMI to use as of July, 2017 is the standard AWS Ubuntu 16.04. It is currently fully supported by trinitycore and you won’t have to mess with the apt sources or anything.[/li]
[li]Remember if you have a local machine with a lot of power, you can use virtual box or vmware to stand up an equivalent operating system on your local machine to compile, then rsync the binaries over to your server. This can save you a lot of time, plus you end up using up less disk space due to compile artifacts on your server.[/li]
[li]Always take a snapshot of your EC2 instance before you upgrade anything. That way if your upgrade goes sideways you can easily roll right back to where you were. Delete old snapshots once you are sure you won’t need them, since you pay for the storage.[/li]
I hope this helps!