Just keep in mind that sending 2000 rows to a popupmenu over the internet is going to take a little time. you may want to use a timer and send it over 200 rows at a time or something like that.
From a UI point of view, you might want to rethink having a popup menu with 2000 entries regardless of whether the control/browser can handle it or not…
In line with the sugestions already made by others, when I must present very long lists, I try to break the list in smaller logical groups. In some applications, I used 2 or 3 webpopups to display the list. Popupmenu 1 would be a general group, popupmenu 2 would be a refinement of the first list (dynamically filled according to the first choice) and the last popupmenu would be the most granular level, also dynamically filled based on the choices made in the previous popup menus.
Yes, this approach forces the user to click on 2 or three popupmenus, but the resulting list to eventually select from is far more manageable. Perhaps this is an approach that you can use?
Now, we don’t want to presume on your requirements. If this suggestion does not work for you, perhaps you could tell us a bit more, so we can offer more appropriate alternatives?