Squeezing Maximum Out Of My Server
To start with, more interesting than the number of records is the size on disk, which we can then compare to your available memory.

Consider the following settings:

innodb_flush_log_at_trx_commit = 1(2)?


This variable appears twice in your cnf file. You probably meant to give it the value 2, which make for less I/O. But you may loose 1 second's worth of transactions upon failure.

You also have:

innodb_doublewrite             = OFF


Which is risky. True, it will make for less I/O, but may also lead to corruption upon failure. I only set this on servers I can spare and do not mind losing.

Set

query-cache-type               = 0


Enough has been written on the query cache that I'll not repeat here; it is an old technology and does not scale to today's machines.

Do yourself a favour and set

long_query_time = 1


Since the 10 second default is way too high to catch the bad guys.

I know nothing about the usage of your DB, but I'm guessing here that

max-connections                = 15000


is waaaay out of proportion. Will you really have 15000 concurrent connections? If you will, then a 18G for innodb_buffer_pool_size is way too high. Connections have their own memory.

All the above off the top of my head. Certainly need more information about your use case.