The most common errors for uploading (due to the limitations) is usually because of:
There are 9 draw calls by default, although 10 since the tongue is activated also by default.
Draw Calls is the result of each new Part, Appendage group, Tongue (1 tongue by default), Male gender (Shaft and Sheath together counts as 2 draw calls).
Mirroring a part will add a draw call of itself and how ever many parts are tied to the initial part.
Fur once enabled also counts as 5 Draw calls (Due to it being activated per limb.)
Fur also counts as 1 more for each part that enables Fur.
The only real way of avoiding too many draw calls in regards to parts is Unchecking/Checking Part of Body check box,
And
Converting or Duplicating the part to a PartInstance.
Part of Body check mark option is mostly for parts of the body that you would want to feature as separate. You can use this as intended, or abuse the Cloth Draw Call and lift the normal draw call burden to that of the clothing draw call.
Partinstancing only works if the part that you want to optimize is not rigged. In other words; if it is a .obj file.
It will not work with a .dae file. Any rigged part/skinned part often saves as a .dae file. It needs to be a solid static mesh .obj file.
Much of the same things with part of body check box still apply with the Triangle limit.
The body model, parts, appendage groups etc all apply Triangles, as they are connected vertices that form a model.
With the use of a third-party app, you can decimate and reduce the number of triangles a model has.
Programs such as Blender allows for this.
Fluff groups also increase the triangle limit and can be reduced by decreasing the Resolution slider that comes with each fluff group.
Try reducing this slider down, but not beyond it looking terrible.
Compression size refers to the overall size of the character in storage. Anything enabled is what is being uploaded. Although there might be certain outliers.
The biggest factor to the file size of the character tends to result from the resolution of textures.
Try reducing the Texture sizes manually. It is recommended that you do not go above 1024x1024 texture sizes when applying to the character in anyway.
Parts can force the resolution down by selecting the TextureResolution in the properties. Parts are 512x512 by default.
In the opposite case where the texture appears lesser than uploaded, you can turn the TextureResolution up to match the uploaded texture if you can still afford the limitations.
Finally, you can completely avoid repeated use of a model and their texture by using PartInstances. PartInstances allows a part, and its partinstance copies to keep their resolution without increasing the file size. This is also true for .dae, rigged/skinned parts. In the case for those, it only optimizes the resolution use.