Environment:
- Team Fortress 2 dedicated server, latest version
- OS: Windows XP Pro Service Pack 3
- CPU: Intel Core 2 Duo 2.80 GHz
- CPU Usage by TF2 Server: 20-50%
- RAM: 4 GB
- RAM Usage by TF2 Server: ~450 MB
- 17 bots, 1 human playing a LAN game
Problem:
When a map finishes, and the server attempts to automatically load the next map, an application error is displayed like:
The server log files do not indicate any problems.
server.cfg:
// General Settings // // Hostname for server. hostname "My Server" // Password to play on server. sv_password "My P@$$w0rd" // Overrides the max players reported to prospective clients sv_visiblemaxplayers 24 // Maximum number of rounds to play before server changes maps mp_maxrounds 5 // Set to lock per-frame time elapse host_framerate 0 // Set the pause state of the server setpause 0 // Control where the client gets content from // 0 = anywhere, 1 = anywhere listed in white list, 2 = steam official content only sv_pure 2 // Is the server pausable sv_pausable 0 // Type of server 0=internet 1=lan sv_lan 1 // Collect CPU usage stats sv_stats 1 // Execute Banned Users // exec banned_user.cfg exec banned_ip.cfg writeid writeip // Contact & Region // // Contact email for server sysop //sv_contact // The region of the world to report this server in. // -1 is the world, 0 is USA east coast, 1 is USA west coast // 2 south america, 3 europe, 4 asia, 5 australia, 6 middle east, 7 africa sv_region -1 // Rcon Settings // // Password for rcon authentication (Remote CONtrol) rcon_password My_Password! // Number of minutes to ban users who fail rcon authentication sv_rcon_banpenalty 1440 // Max number of times a user can fail rcon authentication before being banned sv_rcon_maxfailures 5 // Log Settings // // Enables logging to file, console, and udp < on | off >. log on // Log server information to only one file. sv_log_onefile 0 // Log server information in the log file. sv_logfile 1 // Log server bans in the server logs. sv_logbans 1 // Echo log information to the console. sv_logecho 1 // Rate Settings // // Frame rate limiter fps_max 600 // Min bandwidth rate allowed on server, 0 == unlimited sv_minrate 0 // Max bandwidth rate allowed on server, 0 == unlimited sv_maxrate 20000 // Minimum updates per second that the server will allow sv_minupdaterate 10 // Maximum updates per second that the server will allow sv_maxupdaterate 66 // Download Settings // // Allow clients to upload customizations files sv_allowupload 0 // Allow clients to download files sv_allowdownload 1 // Maximum allowed file size for uploading in MB net_maxfilesize 15 // Team Balancing // // Enable team balancing mp_autoteambalance 0 // Steam said these two commands are unknown. So I commented them. // Time after the teams become unbalanced to attempt to switch players. //mp_autoteambalance_delay 60 // Time after the teams become unbalanced to print a balance warning //mp_autoteambalance_warning_delay 30 // Teams are unbalanced when one team has this many more players than the other team. (0 disables check) mp_teams_unbalance_limit 1 // Round and Game Times // // Game time per map in minutes mp_timelimit 3 // Enable timers to wait between rounds. WARNING: Setting this to 0 has been known to cause a bug with setup times lasting 5:20 (5 minutes 20 seconds) on some servers! mp_enableroundwaittime 1 // Time after round win until round restarts mp_bonusroundtime 8 // If non-zero, the current round will restart in the specified number of seconds mp_restartround 0 // Enable sudden death mp_stalemate_enable 1 // Timelimit (in seconds) of the stalemate round. mp_stalemate_timelimit 300 // Bots // // Number of computer-controlled bots in the server. If a player is in the server, it will override a bot slot. tf_bot_quota 17 // Client CVars // // 0 = enable, 1 = disable respawn times mp_disable_respawn_times 1 // Restricts spectator modes for dead players mp_forcecamera 0 // Toggles whether the server allows spectator mode or not mp_allowspectators 1 // Toggles footstep sounds mp_footsteps 1 // Toggles game cheats sv_cheats 0 // After this many seconds without a message from a client, the client is dropped sv_timeout 900 // Maximum time a player is allowed to be idle (in minutes), made this and sv_timeout equal same time? mp_idlemaxtime 15 // Deals with idle players 1=send to spectator 2=kick mp_idledealmethod 2 // Time (seconds) between decal sprays decalfrequency 30 // Communications // // enable voice communications sv_voiceenable 1 // Players can hear all other players, no team restrictions 0=off 1=on sv_alltalk 0 // Amount of time players can chat after the game is over mp_chattime 10 // Enable party mode tf_birthday 0 mapcycle.txt:
koth_sawmill cp_dustbowl koth_nucleus ctf_turbine koth_badlands cp_manor_event koth_lakeside_final cp_foundry koth_viaduct cp_granary pl_badwater koth_king cp_badlands pl_goldrush koth_probed cp_vanguard pl_swiftwater_final1 koth_moonshine_event cp_gullywash_final1 pl_hoodoo_final koth_lazarus cp_snakewater_final1 pl_thundermountain koth_lakeside_event cp_process_final pl_upward koth_brazil cp_metalworks pl_barnblitz koth_viaduct_event cp_gorge pl_enclosure_final koth_slasher cp_sunshine pl_fifthcurve_event koth_slaughter_event cp_mercenarypark pl_rumble_event cp_mossrock pl_precipice_event_final cp_gorge_event Update #1: I thought it might be the outdated OS (Windows XP) so I installed Windows 10 instead and guess what... the server completely shuts down when trying to change maps.
Update #2: I created a Windows 10 Home virtual machine (on a Windows 10 Home host) using Virtualbox with 4 GB of RAM and two virtual CPUs. The same behavior is occurring (dedicated server crashes during a map change).
31 Answer
Sounds like a RAM issue
Yes, TF2 idles around the 450 MB mark, but if the issue only occurs during map change, then chances are it's spiking way higher than 450 MB attempting to load all the new files for the new map, causing the error above.
As a test (and stop-gap solution), you can try increasing the page file size in Windows. A page file (also known as a swap file, or virtual memory) is a space on the hard drive that Windows will move stuff to when RAM is running low.
It's generally very slow when compared to using actual RAM, so I wouldn't recommend this as a long-term solution (especially if you want this server to eventually be hosted online), but it should stop TF2 from crashing and confirm this was the issue.
To increase the page file size, in Windows 10/11:
- Hit Start and type "Advanced System", you should see "View Advanced System Settings." Click on it.
- In System Properties, under the 'Advanced' tab, click the 'Settings' button under the 'Performance' box.
- In the new window that opens, under the 'Advanced' tab, click the '*Change button under the 'Virtual memory' box
- Uncheck 'Automatically manage paging file size for all drives'
- Highlight your Windows system drive and select 'Custom size'
- Change the Initial size value and the Maximum size value to a higher value. Note the current settings are shown below in MB.
- Click Set, then Apply/OK all the way back out.
Then, you should boot up TF2 and see what happens during a match change. If this fixes the issue, you can then look at purchasing more RAM for the system.