The Calibre2opds catalog is generated from the Calibre metadata database rather than the underlying book files, so if there are entries missing from that database then they will not make it into the calibre2opds generated catalog. You could try running the Calibre->Library->Library Maintenance->Check Library option. The second stage of this checks whether you have book files on disk that are not mentioned in the Calibre database.
Another more subtle error can occur when you hold the Calibre library on a case independent file system (such as used by Windows), but the web site is hosted on a case dependent file system (typically Unix or Linux). In this case all entries should show up in the catalogs, but some of the covers may not show and/or download links may not work. If you check these you will almost certainly find that the case of the folder/file names does not agree with what is in the Calibre database. Since you mention dead links this may be happening to you? One way that I 'think' may correct this (I have not tested it) is to use the Calibre Copy Library facility to make a copy of your library to a new folder on your local machine. With any luck the new copy will have folder/filename cases that match the Calibre metadata database.
Please let me know what you find. If you think that neither of the cases mentioned above apply to you then we will have to look deeper for the cause.